Axy's Mods axysmodswiki https://axysmods.miraheze.org/wiki/Main_Page MediaWiki 1.41.0 first-letter Media Special Talk User User talk Axy's Mods Axy's Mods talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Module Module talk Template:Msgbox 10 8 14 2014-09-11T05:20:36Z crafting>Dinoguy1000 0 Dinoguy1000 moved page [[Template:Msgbox]] to [[Template:Message box]]: I hate trying to find this thing wikitext text/x-wiki #REDIRECT [[Template:Message box]] 550ef94482acd3efb0653a46fc6971b056de2c40 15 14 2024-04-28T15:47:51Z Axxyyy 2 1 revision imported wikitext text/x-wiki #REDIRECT [[Template:Message box]] 550ef94482acd3efb0653a46fc6971b056de2c40 Template:Crafting Table 10 2 2 2015-08-20T11:41:51Z crafting>Majr 0 wikitext text/x-wiki <includeonly>{{#invoke: UI | craftingTable }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page --> </noinclude> ea578c66263b2c2237298c38a63695ce769d41c0 3 2 2024-04-28T15:47:49Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke: UI | craftingTable }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page --> </noinclude> ea578c66263b2c2237298c38a63695ce769d41c0 Module:ProcessArgs 828 4 6 2020-04-04T18:59:08Z crafting>Sonicwave 0 removed redundant check per suggestion on talk page Scribunto text/plain local p = {} function p.norm( origArgs ) if type( origArgs ) ~= 'table' then origArgs = mw.getCurrentFrame():getParent().args end local args = {} for k, v in pairs( origArgs ) do v = mw.text.trim( tostring( v ) ) if v ~= '' then args[k] = v end end return args end function p.merge( origArgs, parentArgs, norm ) if type( origArgs ) ~= 'table' then norm = origArgs local f = mw.getCurrentFrame() origArgs = f.args parentArgs = f:getParent().args end local args = {} for k, v in pairs( origArgs ) do v = mw.text.trim( tostring( v ) ) if not norm or v ~= '' then args[k] = v end end for k, v in pairs( parentArgs ) do v = mw.text.trim( v ) if not norm or v ~= '' then args[k] = v end end return args end return p 8180d2e595306ec42c5e45b8c6a4185a33c56a7c 7 6 2024-04-28T15:47:50Z Axxyyy 2 1 revision imported Scribunto text/plain local p = {} function p.norm( origArgs ) if type( origArgs ) ~= 'table' then origArgs = mw.getCurrentFrame():getParent().args end local args = {} for k, v in pairs( origArgs ) do v = mw.text.trim( tostring( v ) ) if v ~= '' then args[k] = v end end return args end function p.merge( origArgs, parentArgs, norm ) if type( origArgs ) ~= 'table' then norm = origArgs local f = mw.getCurrentFrame() origArgs = f.args parentArgs = f:getParent().args end local args = {} for k, v in pairs( origArgs ) do v = mw.text.trim( tostring( v ) ) if not norm or v ~= '' then args[k] = v end end for k, v in pairs( parentArgs ) do v = mw.text.trim( v ) if not norm or v ~= '' then args[k] = v end end return args end return p 8180d2e595306ec42c5e45b8c6a4185a33c56a7c Template:Tl 10 16 30 2020-04-18T14:57:07Z crafting>Madminecrafter12 0 "Redundant move protection" is not a valid reason (see my previous edit summaries) wikitext text/x-wiki #REDIRECT [[Template:Template link]] fb9a6b420e13178e581af6e7d64274cd30a79017 Template:CfF Community Board Seats/en 10 56 98 2021-03-04T19:13:05Z Translation-category>FuzzyBot 0 Updating to match new version of source page wikitext text/x-wiki <languages/> Pages related to [[Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Community Board seats|the 2021 call for feedback about community seats]] in the Board of Trustees of Wikimedia Foundation. {{#if:{{#translation:}}|[[Category:CfF Community Board Seats/Translations|{{#translation:}}]]}} [[Category:Wikimedia Foundation Board of Trustees{{#translation:}}]] 9b9f881d7e406778a4a1d41dc975e333ff2dc925 Template:TranslateThis 10 53 92 2021-04-15T18:00:12Z Translation-category>MusikBot II 0 Protected "[[Template:TranslateThis]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only autoconfirmed users] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:TranslateThis|main}}</includeonly><noinclude>{{documentation}}</noinclude> ec67859e2d049878c88308d50739380e842ceb87 Template:Translation category/doc 10 54 94 2021-04-25T21:30:59Z Translation-category>Pols12 0 Created page with "{{Documentation subpage}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --> == {{int Usage}} == Should be included alone on /Trans..." wikitext text/x-wiki {{Documentation subpage}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --> == {{int Usage}} == Should be included alone on /Translations subpage of each translatable category. If Category:Foo has been [[Meta:Internationalization guidelines|internationalized with Translate syntax]], Category:Foo/Translations should only contain {{tlx|Translation category}}. == Purpose == Placed at ''Category:Foo/Translations'', this template will: * Display a language bar to navigate to translations (Category:Foo/en, Category:Foo/pt, …). * Display Category:Foo description. * Categorize inside ''/Translations'' subcategory of each category in which Category:Foo is categorized (i.e. if Category:Foo is categorized in Category:Bar, Category:Foo/Translations will be categorized in Category:Bar/Translations). * Categorize inside ''Category:Foo'', indexed as “/Translations” (<code><nowiki>[[Category:Foo|/Translations]]}}</nowiki></code>). <includeonly>{{Sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Internationalization templates]] }}</includeonly> 1f8927c0cf99d11ce8f95176ae5177ca082f503a Template:Languages/Lang 10 48 82 2021-06-06T23:25:21Z Translation-category>Agilight 0 wikitext text/x-wiki {{#if: {{{1|}}} | {{#if: {{#if: {{{all|}}} | 1 | {{#ifexist: {{#if: {{{2|}}} | {{{2|}}} | {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}} }}/{{{1|}}} | 1 }} }} | &nbsp;'''·''' <span lang="{{#if:{{{name|}}}|en|{{BCP47|{{Uselang}}}}}}" title="{{{name|{{#language:{{{1|}}}|{{Uselang}}}}}}} ({{{1}}})"><bdi lang="{{BCP47|{{{1}}}}}" dir="{{Dir|{{{1}}}}}" class="plainlinks autonym" style="white-space:nowrap">{{#ifeq: {{#if: {{{2|}}} | {{{2|}}} | {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}} }}/{{{1|}}} | {{FULLPAGENAME}} | [[:{{FULLPAGENAME}}|{{{autonym|{{#language:{{{1|}}}}}}}}]]<!-- selflink --> | [{{FULLURL:{{#if: {{{2|}}} | {{{2|}}} | {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}} }}/{{{1|}}}|uselang={{{1|}}}}} {{{autonym|{{#language:{{{1|}}}}}}}}]<!-- real link, set interface to be in the language of the page --> }}</bdi></span> }} }}<noinclude>{{Documentation}}</noinclude> 844f59be1b2e87d8921f28439ccadfaffe35a6e6 Template:IsDocSubpage 10 50 86 2021-07-05T18:00:40Z Translation-category>MusikBot II 0 Protected "[[Template:IsDocSubpage]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <onlyinclude><includeonly>{{#ifexpr: ( {{#ifeq:{{lc:{{SUBPAGENAME}}}}|{{lc:{{{override|doc}}}}}|1|0}} or ( {{#ifeq:{{lc:{{#titleparts:{{FULLPAGENAME}}|-1|-2}}}}|{{lc:{{{override|doc}}}}}|1|0}} and {{#if:{{#invoke:Template translation|getLanguageSubpage}}|1|0}} ) )<!-- -->|{{{true|1}}}<!-- -->|{{{false|}}}<!-- -->}}</includeonly></onlyinclude> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --> e60f69b26953d441bf5b76229c9222f16c042ae6 Template:Documentation 10 17 32 2021-07-11T22:31:05Z crafting>ItsPlantseed 0 wikitext text/x-wiki <includeonly>{{#invoke: documentation | page }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwikis on the documentation page --> </noinclude> c461cd371bd48a195ce5385c361e8f7e71be1463 62 32 2021-10-29T20:00:52Z Translation-category>GeneralNotability 0 1 revision imported from [[:w:Template:Documentation]]: blame [[User:Barkeep49]] wikitext text/x-wiki {{#invoke:Documentation|main}} bb08b6773a4c1e1d528cefda2d7c305d8b5193ec Template:Template link 10 15 28 2021-08-17T20:22:17Z crafting>Humiebee 0 Undo revision 2009980 by [[Special:Contributions/Humiebee|Humiebee]] ([[User talk:Humiebee|talk]]) unfortunatly breaks with colons wikitext text/x-wiki <includeonly>{{#if:{{yesno|{{{code|yes}}}}}|<code>}}{{{{#if: {{{subst|}}}|[[WP:SUBSTITUTION|subst]]: }}[[{{#if: {{#pos: {{{1}}} | : }} || Template: }}{{{1}}}|{{ #ifeq: {{NAMESPACE:{{{1}}}}} | Template | {{PAGENAME:{{{1}}}}} | {{{1}}} }}]]{{ #if: {{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{2|}}} }}{{ #if: {{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{3|}}} }}{{ #if: {{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{4|}}} }}{{ #if: {{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{5|}}} }}{{ #if: {{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{6|}}} }}{{ #if: {{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{7|}}} }}{{ #if: {{{8|}}}{{{9|}}} | {{!}}{{{8|}}} }}{{ #if: {{{9|}}} | {{!}}{{{9|}}} }}}}{{#if:{{yesno|{{{code|yes}}}}}|</code>}}{{#if: {{#pos: {{{1}}} | File: }}{{#pos: {{{1}}} | Category: }} | [[Category:Fixme]] }}</includeonly><noinclude> <!-- categories/interwikis on the /doc subpage, not here --> {{Documentation}} </noinclude> 42669227d2179e342a03b8be8115ada28536e13b Template:Message box 10 7 12 2021-08-19T14:48:36Z crafting>AttemptToCallNil 0 sync with sandbox wikitext text/x-wiki <includeonly><div class="msgbox {{#if: {{{mini|{{{small|}}}}}} | msgbox-mini | }} {{ #switch: {{{type|}}} | style | display | presentation = msgbox-yellow | minor | minor-issue | content | issue = msgbox-orange | major | major-issue | delete = msgbox-red | organization | title | move = msgbox-purple | details | parity | edition | upcoming = msgbox-blue | notice | note | info = msgbox-green | other = msgbox-magenta | #default = {{#if: {{#pos: {{{class|}}} | msgbox- <!-- end pos -->}} || msgbox-gray <!-- end if -->}} }} {{{class|}}}" style=" {{#if: {{{bgcol|}}} | background: {{{bgcol}}}; | }} {{#if: {{{linecol|}}} | border-left: 4px solid {{{linecol}}}; | }} max-width: {{{width|{{#if: {{{mini|{{{small|}}}}}} | 50em | 90% }}}}}; {{#if: {{{float|}}} | float: {{{float}}}; | }} {{{css|}}} " > <div id="msgbox-icon"> {{ #if: {{{icon|}}} | <div id="msgbox-iconimage" style="{{{imagecss|}}}"> }}{{ #if: {{{image|}}}{{{imagetextbefore|}}}{{{imagetextafter|}}} | <div id="msgbox-image" class="nomobile" style="{{{imagecss|}}}"> }} {{{imagetextbefore|}}}{{ #if: {{{icon|}}} | {{CommentSprite | {{{icon|}}} }} }}{{ #if:{{{image|}}} |{{ #if: {{{imageisraw|}}} | {{{image}}} | [[File:{{{image}}}|{{#if: {{{imagesize|}}}| {{{imagesize}}}| {{#if: {{{mini|{{{small|}}}}}} | 16px | 32px }}}}|text-top]] }}}}{{{imagetextafter|}}}{{ #if: {{{icon|}}} | </div> }}{{ #if: {{{image|}}}{{{imagetextbefore|}}}{{{imagetextafter|}}} | </div> }} </div> <div style="width: 100%;">{{ #if: {{{title|}}} | '''{{{title}}}'''&nbsp;{{ #if: {{{discuss|}}}{{{discussPage|}}}{{{discussAnchor|}}} | <sup>[<nowiki/>{{direct link|{{ #if: {{{discussPage|}}} | {{{discussPage}}} | {{TALKPAGENAME}} }}{{ #if: {{{discussAnchor|}}} | &#35;{{{discussAnchor}}} }}|discuss}}</sup> }} }}{{ #if: {{{linkshere|}}} | {{#if:{{{discuss|}}}|<sup>, [[Special:WhatLinksHere/{{FULLPAGENAME}}|links]]<nowiki/>]</sup>|<sup>[<nowiki/>[[Special:WhatLinksHere/{{FULLPAGENAME}}|links]]<nowiki/>]</sup>}} | {{ #if:{{{discuss|}}} |<sup>]</sup> }} }} {{ #if: {{{text|}}} | <div id="msgbox-text">{{{text}}}</div> }} </div> </div></includeonly><noinclude> {{documentation}} <!-- Put categories/interwikis on the documentation page --> </noinclude> a021d981ece5c9defc74eac0c3e9eba688dd4683 13 12 2024-04-28T15:47:51Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly><div class="msgbox {{#if: {{{mini|{{{small|}}}}}} | msgbox-mini | }} {{ #switch: {{{type|}}} | style | display | presentation = msgbox-yellow | minor | minor-issue | content | issue = msgbox-orange | major | major-issue | delete = msgbox-red | organization | title | move = msgbox-purple | details | parity | edition | upcoming = msgbox-blue | notice | note | info = msgbox-green | other = msgbox-magenta | #default = {{#if: {{#pos: {{{class|}}} | msgbox- <!-- end pos -->}} || msgbox-gray <!-- end if -->}} }} {{{class|}}}" style=" {{#if: {{{bgcol|}}} | background: {{{bgcol}}}; | }} {{#if: {{{linecol|}}} | border-left: 4px solid {{{linecol}}}; | }} max-width: {{{width|{{#if: {{{mini|{{{small|}}}}}} | 50em | 90% }}}}}; {{#if: {{{float|}}} | float: {{{float}}}; | }} {{{css|}}} " > <div id="msgbox-icon"> {{ #if: {{{icon|}}} | <div id="msgbox-iconimage" style="{{{imagecss|}}}"> }}{{ #if: {{{image|}}}{{{imagetextbefore|}}}{{{imagetextafter|}}} | <div id="msgbox-image" class="nomobile" style="{{{imagecss|}}}"> }} {{{imagetextbefore|}}}{{ #if: {{{icon|}}} | {{CommentSprite | {{{icon|}}} }} }}{{ #if:{{{image|}}} |{{ #if: {{{imageisraw|}}} | {{{image}}} | [[File:{{{image}}}|{{#if: {{{imagesize|}}}| {{{imagesize}}}| {{#if: {{{mini|{{{small|}}}}}} | 16px | 32px }}}}|text-top]] }}}}{{{imagetextafter|}}}{{ #if: {{{icon|}}} | </div> }}{{ #if: {{{image|}}}{{{imagetextbefore|}}}{{{imagetextafter|}}} | </div> }} </div> <div style="width: 100%;">{{ #if: {{{title|}}} | '''{{{title}}}'''&nbsp;{{ #if: {{{discuss|}}}{{{discussPage|}}}{{{discussAnchor|}}} | <sup>[<nowiki/>{{direct link|{{ #if: {{{discussPage|}}} | {{{discussPage}}} | {{TALKPAGENAME}} }}{{ #if: {{{discussAnchor|}}} | &#35;{{{discussAnchor}}} }}|discuss}}</sup> }} }}{{ #if: {{{linkshere|}}} | {{#if:{{{discuss|}}}|<sup>, [[Special:WhatLinksHere/{{FULLPAGENAME}}|links]]<nowiki/>]</sup>|<sup>[<nowiki/>[[Special:WhatLinksHere/{{FULLPAGENAME}}|links]]<nowiki/>]</sup>}} | {{ #if:{{{discuss|}}} |<sup>]</sup> }} }} {{ #if: {{{text|}}} | <div id="msgbox-text">{{{text}}}</div> }} </div> </div></includeonly><noinclude> {{documentation}} <!-- Put categories/interwikis on the documentation page --> </noinclude> a021d981ece5c9defc74eac0c3e9eba688dd4683 Template:BCP47 10 44 74 2021-08-23T18:00:36Z Translation-category>MusikBot II 0 Changed protection settings for "[[Template:BCP47]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{#switch:{{lc:{{{1|}}}}} <!-- pseudo codes --> ||root|default|i-default=<!-- empty language tag means unknown per the HTML spec --><!-- or ={{int:lang}}? (the best user default), or =en? (the default "ContentLanguage" for unlocalized data on Meta) --> <!-- current BCP47 violations by Wikimedia sites, which can be fixed using standard tags when they exist --> |als=gsw |bat-smg=sgs |de-formal=de<!-- could be "de-x-formal", but actually a subset within standard "de" for HTML/XML --> |eml=egl<!-- retired code, the de facto eml.wikipedia uses Emilian, not Romagnol --> |fiu-vro=vro |mo=ro-cyrl<!-- retired, best fit on Wikimedia sites, but no longer working in interwikis (Wikipedia project deleted) --> |nl-informal=nl<!-- could be "nl-x-informal", but actually a subset within standard "nl" for HTML/XML --> |nrm=nrf<!-- Wikimedia sites uses "nrm" to mean Norman, but standard "nrm" is an unrelated language. The "nrf" code is now standardized for Norman (previously used a private-use extension of French "fr-x-nrm") --> |roa-rup=rup |simple=en<!-- could be "en-simple" but actually a subset within standard "en" for HTML --> |sr-ec=sr-cyrl |sr-el=sr-latn |zh-classical=lzh <!-- other current BCP47 violations by Wikimedia sites, fixed using private-use extensions (if they are needed, labels are limited to 8 letters/digits) --> |cbk-zam=cbk-x-zam |map-bms=jv-x-bms |roa-tara=it-x-tara |tokipona|tp=x-tokipona <!-- conforming BCP47 "private-use" extensions used by Wikimedia, which are no longer needed, and improved using now standard codes --> |be-x-old=be-tarask <!-- conforming but ambiguous BCP47 codes used by Wikimedia in a more restrictive way, with more precision --> |arc=syc<!-- The de-facto arc.wikipedia.org, as per their community request, is in actual using Syriac which is coded as syc --> |no=nb<!-- "no" means Bokmål on Wikimedia sites, "nb" is not used --> |bh=bho<!-- "bh"="bih" is a language family, interpreted in Wikimedia as the single language "bho", even if its interwiki code remains bh) --> |tgl=tl-tglg<!-- "tgl" on Wikimedia is the historic variant of the Tagalog macrolanguage ("tl" or "tgl", "tl" recommended for BCP47), written in the Baybayin script ("tglg") --> <!-- conforming BCP47 "inherited" tags, strongly discouraged and replaced by their recommended tags (complete list that should not be augmented now) --> |art-lojban=jbo<!-- still used in some old Wikimedia templates --> |en-gb-oed=en-gb<!-- no preferred replacement, could be "en-gb-x-oed" but actually a subset within standard "en-gb" --> |i-ami=ami |i-bnn=bnn |i-hak=hak |i-klingon=tlh |i-lux=lb |i-navajo=nv |i-pwn=pwn |i-tao=tao |i-tay=tay |i-tsu=tstu |no-bok=nb<!-- still used in some old Wikimedia templates --> |no-nyn=nn<!-- still used in some old Wikimedia templates --> |sgn-be-fr=sfb |sgn-be-nl=vgt |sgn-ch-de=sgg |zh-guoyu=cmn<!-- this could be an alias of "zh" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin --> |zh-hakka=hak |zh-min=zh-tw<!-- no preferred replacement, could be "zh-x-min", but actually a subset within standard "zh-tw"; not necessarily "nan" --> |zh-min-nan=nan<!-- used in some old Wikimedia templates and in interwikis --> |zh-xiang=hsn <!-- conforming BCP47 "redundant" tags, discouraged and replaced by their recommended tags (complete list that should not be augmented now) --> |sgn-br=bzs |sgn-co=csn |sgn-de=gsg |sgn-dk=dsl |sgn-es=ssp |sgn-fr=fsl<!-- still used in some old Wikimedia templates --> |sgn-gb=bfi |sgn-gr=gss |sgn-ie=isg |sgn-it=ise |sgn-jp=jsl |sgn-mx=mfs |sgn-ni=ncs |sgn-nl=dse |sgn-no=nsl |sgn-pt=psr |sgn-se=swl |sgn-us=ase<!-- still used in some old Wikimedia templates --> |sgn-za=sfs |zh-cmn=cmn<!-- still used in some old Wikimedia templates, this could be an alias of "zh" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin --> |zh-cmn-Hans=cmn-hans<!-- still used in some old Wikimedia templates, this could be an alias of "zh-hans" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin --> |zh-cmn-Hant=cmn-hant<!-- still used in some old Wikimedia templates, this could be an alias of "zh-hant" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin --> |zh-gan=gan<!-- still used in some old Wikimedia templates --> |zh-wuu=wuu<!-- still used in some old Wikimedia templates --> |zh-yue=yue<!-- still used in some old Wikimedia templates and in interwikis --> <!-- other "inherited" tags of the standard, strongly discouraged as they are deleted, but with no defined replacement there are left unaffected (complete list that should not be augmented now)--> |cel-gaulish=xtg<!--ambiguous, most often "xtg" for Transalpine Gaulish in today's France, may also be "xcg" for Cisalpine Gaulish in today's Northern Italy--> |i-enochian=x-enochian? |i-mingo=x-mingo? <!-- other standard "redundant" tags, which were unnecessarily registered (they validate with standard subtags) and that are left unaffected (complete list that should not be augmented now) |az-arab |az-cyrl |az-latn |be-latn |bs-cyrl |bs-latn |de-1901 |de-1996 |de-at-1901 |de-at-1996 |de-ch-1901 |de-ch-1996 |de-de-1901 |de-de-1996 |en-boont |en-scouse |iu-cans |iu-latn |mn-cyrl |mn-mong |sl-nedis |sl-rozaj |sr-cyrl |sr-latn |tg-arab |tg-cyrl |uz-cyrl |uz-latn |yi-latn |zh-hans |zh-hans-cn |zh-hans-hk |zh-hans-mo |zh-hans-sg |zh-hans-tw |zh-hant |zh-hant-cn |zh-hant-hk |zh-hant-mo |zh-hant-sg |zh-hant-tw --- standard special codes |mul |und --- all other unaffected tags: Minimal check of validity (valid BCP47 codes are necessarily stable over URLENCODE and #titleparts). The check ensures that the code contains only ASCII letters, digits or hyphens, and starts by a letter. This check is necessary to avoid a severe bug in MediaWiki, with some values of parameter 1, notably with urlencoded characters (including quotes, braces, ampersands...), slashes, or any HTML or wiki formatting (see also [[Template:CURRENTCONTENTLANGUAGE]]). If successful, force result to lowercase; otherwise return an empty language tag. --> |#default = {{#ifeq: {{#titleparts:{{{1|}}}|1}} | {{#titleparts:{{{1|}}}||-1}} | {{#ifeq: {{lc:{{#titleparts:{{{1|}}}|1}}}} | {{ucfirst:{{lc:{{#titleparts:{{{1|}}}|1}}}}}} | | {{#ifeq: {{{1|}}} | {{urlencode:{{{1|}}}}} | {{lc:{{{1|}}}}} }} }} }} }}<noinclude>{{Documentation}}</noinclude> c8d624bc6118b4a7d84d16636cf616ce4c2df56f Template:Uselang 10 41 68 2021-08-23T18:00:53Z Translation-category>MusikBot II 0 Changed protection settings for "[[Template:Uselang]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{#ifeq:{{Int:Lang}}|⧼Lang⧽|en|{{Int:Lang}}}}<noinclude>{{Doc}}</noinclude> cdb7e5da66ac1deb7310bf422b52c99913388742 Template:UI see also 10 21 40 2021-09-03T20:31:57Z crafting>Fadyblok240 0 wikitext text/x-wiki * {{tl|Crafting Table}} * {{tl|Inventory Table}} * {{tl|Furnace}} * {{tl|Brewing Stand}} * {{tl|Stonecutter}} * {{tl|Loom}} * {{tl|Grindstone}} * {{tl|Hotbar}} * {{tl|Inventory}} * {{tl|Inventory slot}} * [[Module:UI]]<noinclude> {{Documentation}} <!-- Put categories/interwiki on the documentation page --> </noinclude> f7bc713ef11da21be62732d6a243da2412173562 Template:Str left 10 43 72 2022-01-01T18:01:16Z Translation-category>MusikBot II 0 Changed protection settings for "[[Template:Str left]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{ {{{|safesubst:}}}padleft:|{{{2|1}}}|{{{1}}}}}</includeonly><noinclude> {{documentation}} </noinclude> 9c0bdb76d3fd64ecd8af888df4ec235e5aec0b33 Template:Documentation/styles.css 10 40 66 2022-01-16T18:41:11Z Translation-category>MarcoAurelio 0 Per IRC, this should return things back to normal text text/plain /* {{PP-template}} */ .ts-doc-sandbox .mbox-image { padding:.75em 0 .75em .75em; } .ts-doc-doc { clear: both; background-color: #ecfcf4; border: 1px solid #a2a9b1; margin-top: 1em; padding: 5px; } .ts-doc-header { padding-bottom: 3px; border-bottom: 1px solid #a2a9b1; margin-bottom: 1ex; } .ts-doc-header .ts-tlinks-tlinks { display: inline-block; line-height: 24px; margin-left: 1em; } .ts-doc-header .ts-tlinks-tlinks a.external { color: #0645ad; } .ts-doc-header .ts-tlinks-tlinks a.external:visited { color: #0b0080; } .ts-doc-header .ts-tlinks-tlinks a.external:active { color: #faa700; } .ts-doc-content:after { content: ''; clear: both; display: block; } .ts-doc-heading { display: inline-block; padding-left: 55px; background: center left/50px no-repeat; background-image: url(https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png); background-image: url(https://upload.wikimedia.org/wikipedia/commons/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg); font-size: 1.5em; } .ts-doc-content > *:first-child, .ts-doc-footer > *:first-child { margin-top: .5em; } .ts-doc-content > *:last-child, .ts-doc-footer > *:last-child { margin-bottom: .5em; } .ts-doc-footer { background-color: #ecfcf4; border: 1px solid #a2a9b1; padding: .25em 1em; margin-top: .2em; font-style: italic; } .ts-doc-footer small { font-style: normal; } .ts-doc-sandbox { clear: both; } c37b0ddfd0b1c128c187ca56721d1c4e481b05ff Template:Documentation subpage 10 49 84 2022-10-12T16:54:07Z Translation-category>GVarnum-WMF 0 {{#translation:}} wikitext text/x-wiki <includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}} | <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show | {{Ombox|type=notice|image=[[File:Edit-copy green.svg|40px|link=]] |text='''This is a [[Help:Template documentation|documentation]] [[mw:Help:Subpages|subpage]] for {{#if:{{{1|}}} | {{{1}}} | [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]] }}.'''<br/> It contains usage information, [[Categorization|categories]], and other content that is not part of the original<!-- --> {{#if: {{{text2|}}} | {{{text2|}}} | {{#if: {{{text1|}}} | {{{text1|}}} | {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}} | {{lc:{{SUBJECTSPACE}}}} template page | {{#if: {{SUBJECTSPACE}} | {{lc:{{SUBJECTSPACE}}}} page | article }} }} }} }}. }} <!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}} | <!--Skip--> | <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch: {{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Template }} documentation pages{{#translation:}}]] | [[Category:Documentation subpages without corresponding pages{{#translation:}}]] }}</includeonly> }}<includeonly> }}</includeonly><noinclude>{{Documentation}}<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude> a5300bf1d640c82dada9be2a2b099a0d7b76f123 Template:Sandbox other 10 51 88 2022-10-28T18:01:31Z Translation-category>MusikBot II 0 Protected "[[Template:Sandbox other]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only autoconfirmed users] (indefinite)) wikitext text/x-wiki <!-- -->{{#if:<!-- -->{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}<!-- -->|sandbox<!-- -->|1<!-- -->}}<!-- -->{{#ifeq:{{SUBPAGENAME}}|doc<!-- -->|1<!-- -->}}<!-- -->{{#invoke:String|match<!-- -->|{{PAGENAME}}<!-- -->|/sandbox/styles.css$<!-- -->|plain = false<!-- -->|nomatch = <!-- -->}}<!-- -->|{{{1|}}}<!-- -->|{{{2|}}}<!-- -->}}<!-- --><noinclude> {{documentation}} </noinclude> 10ab2a8619ffe82e75daf68783e80852419e186a Template:Dir 10 42 70 2022-11-03T09:12:23Z Translation-category>Billinghurst 0 +ks-arab per [[special:diff/24008946]] wikitext text/x-wiki {{#switch:{{#if:{{{1|}}}|{{{1|}}}|{{Uselang}}}}|ar|arc|ary|arz|azb|bcc|bgn|ckb|bqi|dv|fa|fa-af|glk|ha-arab|he|kk-arab|kk-cn|ks|ks-arab|ku-arab|ms-arab|mzn|pnb|prd|ps|sd|ug|ur|ydd|yi={{{2|rtl}}}|{{{3|ltr}}}}}<noinclude>{{Documentation}}</noinclude> a65308984923226784ec1a65932f60f03cde075c Template:CfF Community Board Seats 10 55 96 2023-01-28T10:42:00Z Translation-category>Minorax 0 tvar update wikitext text/x-wiki <languages/> <translate> <!--T:1--> Pages related to [[<tvar name="1">Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Community Board seats</tvar>|the 2021 call for feedback about community seats]] in the Board of Trustees of Wikimedia Foundation. </translate> {{#if:{{#translation:}}|[[Category:CfF Community Board Seats/Translations|{{#translation:}}]]}} [[Category:Wikimedia Foundation Board of Trustees{{#translation:}}]] 2ec7de376b07fd269d635bb215a499a1fed5c578 Template:FileUrlStyle 10 6 10 2023-02-22T12:34:48Z crafting>OishiiOnIno 0 per update request wikitext text/x-wiki <includeonly>{{ #ifexist: File:{{PAGENAME:{{{2}}}}} }}{{ #widget: FileUrlStyle | class = {{{1}}} | url = {{ #urldecode: {{ #sub: {{filepath: {{#titleparts: {{PAGENAME:{{{2}}}}}}} | {{{3|}}} }} | {{ #len: {{ #explode: {{filepath: Wiki.png}} | b/bc/ }} }} }} }}{{#if: {{{query|}}} | &{{{query}}} }}&format=original }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page --> </noinclude> 91024151befa6ac8a7718412f525637ea51aaf3a 11 10 2024-04-28T15:47:51Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{ #ifexist: File:{{PAGENAME:{{{2}}}}} }}{{ #widget: FileUrlStyle | class = {{{1}}} | url = {{ #urldecode: {{ #sub: {{filepath: {{#titleparts: {{PAGENAME:{{{2}}}}}}} | {{{3|}}} }} | {{ #len: {{ #explode: {{filepath: Wiki.png}} | b/bc/ }} }} }} }}{{#if: {{{query|}}} | &{{{query}}} }}&format=original }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page --> </noinclude> 91024151befa6ac8a7718412f525637ea51aaf3a Template:Tlx 10 39 64 2023-02-24T14:49:03Z Translation-category>Xaosflux 0 missing : wikitext text/x-wiki {{#if:{{{plain|}}}||<code>}}{{[[{{#if:{{{SISTER|}}}|{{{SISTER}}}:Template|Special:MyLanguage/{{ns:Template}}}}:{{{1|Tlx}}}|{{{1|Tlx}}}]]<!-- -->{{#if:{{{2|}}}|&#124;{{{2}}}}}<!-- -->{{#if:{{{3|}}}|&#124;{{{3}}}}}<!-- -->{{#if:{{{4|}}}|&#124;{{{4}}}}}<!-- -->{{#if:{{{5|}}}|&#124;{{{5}}}}}<!-- -->{{#if:{{{6|}}}|&#124;{{{6}}}}}<!-- -->{{#if:{{{7|}}}|&#124;{{{7}}}}}<!-- -->{{#if:{{{8|}}}|&#124;''...''}}}}{{#if:{{{plain|}}}||</code>}}<noinclude> {{documentation}} </noinclude> f2cb8c0397aa726f8314df231cfe853f25cab851 Template:Crafting Table/doc 10 22 42 2023-03-17T07:05:22Z crafting>Mykytius 0 wikitext text/x-wiki {{documentation header}} {{lua|UI}} This template is used to create an interface that looks similar to the [[Crafting Table|Crafting Table's]]. See [[Template:Inventory slot]] for basic usage, this documentation page will cover additional or different functions. Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead. __TOC__ == Usage == <pre style="max-width: 250px">{{Crafting Table |A1= |B1= |C1= |A2= |B2= Oak Wood Planks |C2= |A3= |B3= Oak Wood Planks |C3= |Output= Stick,4 }}</pre> ;produces: {{Crafting Table |A1= |B1= |C1= |A2= |B2= Oak Wood Planks |C2= |A3= |B3= Oak Wood Planks |C3= |Output= Stick,4 }} === Shapeless === If a recipe is shapeless, add shapeless=1 to the template, which will display an icon which when hovered over explains what a shapeless recipe is. <pre style="max-width: 236px">{{Crafting Table |shapeless= 1 |A1= |B1= Blaze Powder |C1= |A2= |B2= Coal,Charcoal |C2= |A3= |B3= Gunpowder |C3= |Output= Fire Charge,3 }}</pre> ;produces: {{Crafting Table |shapeless= 1 |A1= |B1= Blaze Powder |C1= |A2= |B2= Coal,Charcoal |C2= |A3= |B3= Gunpowder |C3= |Output= Fire Charge,3 }} The shapeless parameter does not support animation, so shapeless and non-shapeless recipes cannot be combined. === Fixed === If a recipe is fixed, add fixed=1 to the template, which will display an icon which when hovered over explains what a fixed recipe is. The <code>notfixed</code> parameter can also be set to specify exceptions. <pre style="max-width: 31em">{{Crafting Table |fixed= 1 |notfixed= the banner |B2= Banner |A3= Lapis Lazuli |B3= Lapis Lazuli |C3= Lapis Lazuli |Output= Blue Base Banner }}</pre> ;produces: {{Crafting Table |fixed= 1 |notfixed= the banner |B2= Banner |A3= Lapis Lazuli |B3= Lapis Lazuli |C3= Lapis Lazuli |Output= Blue Base Banner }} The fixed parameter does not support animation, so fixed, shapeless and normal recipes cannot be combined. === Animated === To make the slots animate, you make a list of blocks and objects you want to show, separated by semi-colons. <pre style="max-width: 616px">{{Crafting Table |A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli |A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli |A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli |Output= Lapis Lazuli,9; Lapis Lazuli Block }}</pre> ;produces: {{Crafting Table |A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli |A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli |A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli |Output= Lapis Lazuli,9; Lapis Lazuli Block }} <pre style="max-width: 602px">{{Crafting Table |A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block; Block of Netherite }}</pre> ;produces: {{Crafting Table |A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block; Block of Netherite }} === Mods === Mod images and normal images can be combined just like in a single slot. However, this usage is not recommended, as [https://ftb.gamepedia.com/Feed_The_Beast_Wiki:Minecraft_Wiki_exportation_project mod pages are currently being transferred to the FTB Wiki]. <!-- When uploading mod images, they must have the mod page name in parenthesis at the end. For example Fancystone (FancyPack). The Mod parameter can be used to set a default used for all parameters, this is best used when all items in the crafting table are modded items, or if the mod name is long and using the vanilla (v) parameter for the vanilla items in the table would be quicker. <pre style="max-width: 848px">{{Crafting Table |A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust |A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit |A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone |Output= IndustrialCraft:Advanced Circuit,2 }}</pre> ;or <pre style="max-width: 656px">{{Crafting Table |Mod= IndustrialCraft |A1= v:Redstone Dust |B1= Cable |C1= vanilla:Glowstone Dust |A2= Electronic Circuit |B2= V:Lapis Lazuli Block |C2= Electronic Circuit |A3= Vanilla:Glowstone Dust |B3= Cable |C3= v:Redstone Dust |Output= Advanced Circuit,2 }}</pre> ;produces: {{Crafting Table |A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust |A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit |A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone |Output= IndustrialCraft:Advanced Circuit,2 }} Note the links of the vanilla Minecraft items, compared to the IndustrialCraft items. Animation is fully supported between mod and vanilla items. --> == See also == {{UI see also}} <includeonly> [[Category:Inventory templates]] [[Category:Image templates]] [[de:Vorlage:Grid/Crafting Table]] [[es:Plantilla:Mesa de trabajo]] [[fr:Modèle:Grille/Établi]] [[it:Template:Grid/Crafting Table]] [[ja:テンプレート:Crafting Table]] [[ko:틀:Crafting Table]] [[nl:Template:Grid/Crafting Table]] [[pl:Szablon:Grid/Crafting Table]] [[pt:Predefinição:Bancada de trabalho]] [[ru:Шаблон:Верстак]] [[uk:Шаблон:Верстак]] [[zh:Template:Crafting Table]] </includeonly> <noinclude> [[de:Vorlage:Grid/Crafting Table/doc]] [[es:Plantilla:Mesa de trabajo/doc]] [[fr:Modèle:Grille/Établi/doc]] [[ja:テンプレート:Crafting Table/doc]] [[ko:틀:Crafting Table/doc]] [[nl:Template:Grid/Crafting Table/doc]] [[pl:Szablon:Grid/Crafting Table/doc]] [[pt:Predefinição:Bancada de trabalho/doc]] [[ru:Шаблон:Верстак/док]] [[uk:Шаблон:Верстак/док]] [[zh:Template:Crafting Table/doc]] </noinclude> 1f97eaff4bbd7dd9511988b592fb9360e879a2cb Module:Documentation 828 19 36 2023-04-18T10:45:00Z crafting>Number 3434 0 Scribunto text/plain local p = {} local defaultDocPage = 'doc' local getType = function( namespace, page ) local pageType = 'template' if namespace == 'Module' then pageType = 'module' elseif namespace == 'Widget' then pageType = 'widget' elseif page.fullText:gsub( '/' .. defaultDocPage .. '$', '' ):find( '%.css$' ) then pageType = 'stylesheet' elseif page.fullText:gsub( '/' .. defaultDocPage .. '$', '' ):find( '%.js$' ) then pageType = 'script' elseif namespace == 'MediaWiki' then pageType = 'message' end return pageType end -- Creating a documentation page or transclusion through {{subst:docc}} function p.create( f ) local args = require( 'Module:ProcessArgs' ).norm() local page = mw.title.getCurrentTitle() local docPage = args.page or page.nsText .. ':' .. page.baseText .. '/' .. defaultDocPage local out if not args.content and tostring( page ) == docPage then out = f:preprocess( '{{subst:Template:Documentation/preload}}' ) else local templateArgs = {} for _, key in ipairs{ 'type', 'page', 'content' } do local val = args[key] if val then if key == 'content' then val = '\n' .. val .. '\n' end table.insert( templateArgs, key .. '=' .. val ) end end out = '{{documentation|' .. table.concat( templateArgs, '|' ) .. '}}' out = out:gsub( '|}}', '}}' ) if not args.content then out = out .. '\n<!-- Put categories/interwikis on the documentation page -->' end end if not mw.isSubsting() then out = f:preprocess( out ) if not args.nocat then out = out .. '[[Category:Pages with templates requiring substitution]]' end end return out end -- Header on the documentation page function p.docPage( f ) local args = require( 'Module:ProcessArgs' ).merge( true ) local badDoc = args.baddoc if f:callParserFunction( '#dplvar', '$doc noheader' ) == '1' then if badDoc then f:callParserFunction( '#dplvar:set', '$doc bad', '1' ) end return end local page = mw.title.getCurrentTitle() local subpage = page.subpageText if subpage == 'sandbox' or subpage == 'testcases' then page = page.basePageTitle end local namespace = page.nsText local pageType = mw.ustring.lower( args.type or getType( namespace, page ) ) local body = mw.html.create( 'div' ):addClass( 'documentation-header' ) body :addClass( badDoc and 'documentation-badDoc' or '' ) :css{ ['margin-bottom'] = '0.8em', padding = '0.8em 1em 0.7em', ['background-color'] = '#' .. ( badDoc and '888888' or '33333333' ), border = '1px solid #AAA' } :tag( 'div' ) :attr( 'id', 'documentation-header-tools' ) :css( 'float', 'right' ) :wikitext( '[[', page:fullUrl( 'action=purge' ), ' ' .. f:preprocess('{{lc:{{int:page-header-action-button-purge}}}}') .. ']]' ) :done() :wikitext( 'This is the documentation page. It ', pageType == 'module' and 'will' or 'should', ' be transcluded into the main ', pageType, ' page. ', 'See [[Template:Documentation]] for more information' ) if badDoc then body:wikitext( "<br>'''This ", pageType, "'s documentation needs improving or additional information.'''" ) end if not ( args.nocat or namespace == 'User' ) then body:wikitext( '[[Category:Documentation pages]]' ) end return body end -- Wrapper around the documentation on the main page function p.page( f ) -- mw.text.trim uses mw.ustring.gsub, which silently fails on large strings local function trim( s ) return (s:gsub( '^[\t\r\n\f ]+', '' ):gsub( '[\t\r\n\f ]+$', '' )) --return string.gsub( s, '^[\t\r\n\f ]*(.-)[\t\r\n\f ]*$', '%1' ) end local args = require( 'Module:ProcessArgs' ).merge( true ) local page = mw.title.getCurrentTitle() local subpage = page.subpageText if subpage == 'sandbox' or subpage == 'testcases' then page = page.basePageTitle end local namespace = page.nsText local docText = trim( args.content or '' ) if docText == '' then docText = nil end local docPage local noDoc if docText then docPage = page else docPage = mw.title.new( args.page or namespace .. ':' .. page.text .. '/' .. defaultDocPage ) noDoc = args.nodoc or not docPage.exists end local badDoc = args.baddoc local pageType = mw.ustring.lower( args.type or getType( namespace, page ) ) if not docText and not noDoc then f:callParserFunction( '#dplvar:set', '$doc noheader', '1' ) docText = trim( f:expandTemplate{ title = ':' .. docPage.fullText } ) if f:callParserFunction( '#dplvar', '$doc bad' ) == '1' then badDoc = 1 end if docText == '' then docText = nil noDoc = 1 end end if docText then docText = '\n' .. docText .. '\n' end local action = f:preprocess('{{lc:{{int:edit}}}}') local preload = '' local docClass = '' local colour = '00000000' local message local category if noDoc then action = f:preprocess('{{lc:{{int:create}}}}') preload = '&preload=Template:Documentation/preload' docClass = 'documentation-noDoc' colour = '33333333' message = "'''This " .. pageType .. " has no documentation. " .. "If you know how to use this " .. pageType .. ", please create it.'''" if not ( args.nocat or namespace == 'User' ) then category = pageType .. 's with no documentation' if not mw.title.new( 'Category:' .. category ).exists then category = 'Pages with no documentation' end end elseif badDoc then docClass = 'documentation-badDoc' colour = 'F9F2EA' message = "'''This " .. pageType .. "'s documentation needs improving or additional information.'''\n" if not ( args.nocat or namespace == 'User' ) then category = pageType .. 's with bad documentation' if not mw.title.new( 'Category:' .. category ).exists then category = 'Pages with bad documentation' end end end local links = { '[' .. docPage:fullUrl( 'action=edit' .. preload ) .. ' ' .. action .. ']', '[' .. docPage:fullUrl( 'action=history' ) .. ' ' .. f:preprocess('{{lc:{{int:history short}}}}') .. ']', '[' .. page:fullUrl( 'action=purge' ) .. ' ' .. f:preprocess('{{lc:{{int:page-header-action-button-purge}}}}') .. ']' } if not noDoc and page ~= docPage then table.insert( links, 1, '[[' .. docPage.fullText .. '|' .. f:preprocess('{{lc:{{int:view}}}}') .. ']]' ) end links = mw.html.create( 'span' ) :attr( 'id', 'documentation-header-tools' ) :css( 'float', 'right' ) :wikitext( mw.text.nowiki( '[' ), table.concat( links, ' | ' ), mw.text.nowiki( ']' ) ) local body = mw.html.create( 'div' ):addClass( 'documentation' ) body :addClass( docClass ) :css{ ['background-color'] = '#' .. colour, border = '1px solid #AAA', padding = '0.8em 1em 0.7em', ['margin-top'] = '1em', clear = 'both' } local header = mw.html.create( 'div' ) :addClass( 'documentation-header-top' ) :css{ margin = '-0.8em -1em 0.8em', padding = '0.8em 1em 0.7em', ['background-color'] = '#33333333', ['border-bottom'] = 'inherit' } header :node( links ) :tag( 'span' ) :attr( 'id', 'documentation-header-title' ) :css{ ['font-weight'] = 'bold', ['font-size'] = '130%', ['margin-right'] = '1em', ['line-height'] = '1' } :wikitext( 'Documentation' ) local codePages = { module = true, stylesheet = true, script = true, } if not noDoc and codePages[pageType] then header :tag( 'span' ) :attr( 'id', 'documentation-jump-to-code' ) :css( 'white-space', 'nowrap' ) :wikitext( '[[#the-code|Jump to code ↴]]' ) end body :node( header ):done() :wikitext( message ) :wikitext( docText ) if not noDoc and page ~= docPage then body :tag( 'div' ) :addClass( 'documentation-header-bottom' ) :css{ margin = '0.7em -1em -0.7em', ['background-color'] = '#33333333', ['border-top'] = 'inherit', padding = '0.8em 1em 0.7em', clear = 'both' } :node( links ) :wikitext( 'The above documentation is transcluded from [[', docPage.fullText, ']].' ) end local anchor = '' if not noDoc and pageType ~= 'template' and pageType ~= 'message' then anchor = mw.html.create( 'div' ):attr( 'id', 'the-code' ) end return tostring( body ) .. tostring( anchor ) end return p 21bd039aea338542482dbf80b92e8ebf5465f0c3 Module:Inventory slot 828 11 20 2023-06-29T16:26:31Z crafting>Magiczocker 0 Revert edits by [[Special:Contributions/Magiczocker|Magiczocker]] ([[User talk:Magiczocker|talk]]) Scribunto text/plain local p = {} local i18n = { filename = 'Invicon $1', legacyFilename = 'Grid $1.png', modLink = 'Mods/$1/$2', moduleAliases = [[Module:Inventory slot/Aliases]], moduleInvData = [[Module:InvSprite]], moduleModData = 'Module:InvSprite/Mods/$1', moduleRandom = [[Module:Random]], moduleSprite = [[Module:Sprite]], -- List of special prefixes which should be handled by -- other modules (such as being moved outside links) prefixes = { any = 'Any', matching = 'Matching', damaged = 'Damaged', }, suffixes = { be = 'BE', lce = 'LCE', }, templateFileUrl = 'FileUrl', } p.i18n = i18n local random = require( i18n.moduleRandom ).random local sprite = require( i18n.moduleSprite ).sprite local aliases = mw.loadData( i18n.moduleAliases ) local ids = mw.loadData( i18n.moduleInvData ).ids local modIds = {} local pageName = mw.title.getCurrentTitle().text -- Performs a simple recursive clone of a table's values local function cloneTable( origTable ) local newTable = {} for k, v in pairs( origTable ) do if type( v ) == 'table' then v = cloneTable( v ) end newTable[k] = v end return newTable end --[[Merges a list, or inserts a string or table into a table --]] local function mergeList( parentTable, content ) local i = #parentTable + 1 if content[1] then -- Merge list into table for _, v in ipairs( content ) do parentTable[i] = v i = i + 1 end else -- Add strings or tables to table parentTable[i] = content end end -- Creates the HTML for an item local function makeItem( frame, i, args ) local item = mw.html.create( 'span' ):addClass( 'invslot-item' ) if args.imgclass then item:addClass( args.imgclass ) end if frame.name == '' then return item end local category local title = frame.title or mw.text.trim( args.title or '' ) local mod = frame.mod local name = frame.name or '' local num = frame.num local description = frame.text local img, idData if mod then local modData = modIds[mod] if not modData and mw.title.new( i18n.moduleModData:gsub( '%$1', mod ) ).exists then modData = mw.loadData( i18n.moduleModData:gsub( '%$1', mod ) ) modIds[mod] = modData end if modData and modData[name] then idData = modData[name] else img = i18n.legacyFilename:gsub( '%$1', name .. ' (' .. mod .. ')' ) end elseif ids[name] then idData = ids[name] elseif name:match( '\.gif$' ) or name:match( '\.png$' ) then img = i18n.filename:gsub( '%$1', name ) -- Remove file extension from name name = name:sub( 0, -5 ) end local link = args.link or '' if link == '' then if mod then link = i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name ) else link = name:gsub( '^' .. i18n.prefixes.damaged .. ' ', '' ) for _, suffix in pairs( i18n.suffixes ) do link = link:gsub( ' ' .. suffix .. '$', '' ) end end elseif link:lower() == 'none' then link = nil end if link == pageName then link = nil end local formattedTitle local plainTitle if title == '' then plainTitle = name elseif title:lower() ~= 'none' then plainTitle = title:gsub( '\\\\', '&#92;' ):gsub( '\\&', '&#38;' ) local formatPattern = '&[0-9a-fk-or]' if plainTitle:match( formatPattern ) then formattedTitle = title plainTitle = plainTitle:gsub( formatPattern, '' ) end if plainTitle == '' then plainTitle = name else plainTitle = plainTitle:gsub( '&#92;', '\\' ):gsub( '&#38;', '&' ) end elseif link then if img then formattedTitle = '' else plainTitle = '' end end item:attr{ ['data-minetip-title'] = formattedTitle, ['data-minetip-text'] = description } if img then -- & is re-escaped because mw.html treats attributes -- as plain text, but MediaWiki doesn't local escapedTitle = ( plainTitle or '' ):gsub( '&', '&#38;' ) item:addClass( 'invslot-item-image' ) :wikitext( '[[File:', img, '|32x32px|link=', link or '', '|', escapedTitle, ']]' ) else local image if mod then image = args.spritesheet or mod .. 'Sprite.png' end if link then item:wikitext( '[[', link, '|' ) end local image, spriteCat = sprite{ iddata = idData, title = plainTitle, image = image, data = 'InvSprite', nourl = args.nourl, } item:node( image ) category = spriteCat end if num and num > 1 and num < 1000 then if img and link then item:wikitext( '[[', link, '|' ) end local number = item :tag( 'span' ) :addClass( 'invslot-stacksize' ) :attr{ title = plainTitle } :wikitext( num ) if numStyle then number:cssText( numStyle ) end if img and link then item:wikitext( ']]' ) end end if not img and link then item:wikitext( ']]' ) end item:wikitext( category ) return item end -- Main entry point function p.slot( f ) local args = f.args or f if f == mw.getCurrentFrame() and args[1] == nil then args = f:getParent().args end if not args.parsed then args[1] = mw.text.trim( args[1] or '' ) end local modData = { aliases = args.modaliases or '', default = args.mod } if modData.aliases ~= '' then modData.aliases = mw.loadData( 'Module:' .. modData.aliases ) else modData.aliases = nil end if args.mod == '' then modData.default = nil end local frames if args.parsed then frames = args[1] elseif args[1] ~= '' then local randomise = args.class == 'invslot-large' and 'never' or nil frames = p.parseFrameText( args[1], randomise, false, modData ) end local animated = frames and #frames > 1 local imgClass = args.imgclass local numStyle = args.numstyle local body = mw.html.create( 'span' ):addClass( 'invslot' ):css{ ['vertical-align'] = args.align } if animated then body:addClass( 'animated' ) end if args.class then body:addClass( args.class ) end if args.style then body:cssText( args.style ) end if ( args.default or '' ) ~= '' then body:css( 'background-image', f:expandTemplate{ title = i18n.templateFileUrl, args = { args.default .. '.png' } } ) end --mw.logObject( frames ) if not frames then return tostring( body ) end local activeFrame = frames.randomise == true and random( #frames ) or 1 for i, frame in ipairs( frames ) do local item -- Table is a list, must contain subframes if frame[1] then item = body:tag( 'span' ):addClass( 'animated-subframe' ) local subActiveFrame = frame.randomise and random( #frame ) or 1 for sI, sFrame in ipairs( frame ) do local sItem = makeItem( sFrame, sI, args ) item:node( sItem ) if sI == subActiveFrame then sItem:addClass( 'animated-active' ) end end else item = makeItem( frame, i, args ) body:node( item ) end if i == activeFrame and animated then item:addClass( 'animated-active' ) end end return tostring( body ) end --[[Parses the frame text into a table of frames and subframes, expanding aliases (and optionally retaining a reference), and deciding if the slot can be randomised --]] function p.parseFrameText( framesText, randomise, aliasReference, modData ) local frames = { randomise = randomise } local subframes = {} local subframe local expandedAliases local splitFrames = mw.text.split( mw.text.trim( framesText ), '%s*;%s*' ) for _, frameText in ipairs( splitFrames ) do frameText = frameText:gsub( '^%s*{%s*', function() subframe = true return '' end ) if subframe then frameText = frameText:gsub( '%s*}%s*$', function() subframe = 'last' return '' end ) end local frame = p.makeFrame( frameText, modData and modData.default ) local newFrame = frame if aliases or modData.aliases then local id = frame.name if frame.mod then id = frame.mod .. ':' .. id end local alias = modData and modData.aliases and modData.aliases[id] or aliases and aliases[id] if alias then newFrame = p.getAlias( alias, frame ) if aliasReference then local curFrame = #frames + 1 local aliasData = { frame = frame, length = #newFrame } if subframe then if not subframes.aliasReference then subframes.aliasReference = {} end subframes.aliasReference[#subframes + 1] = aliasData else if not expandedAliases then expandedAliases = {} end expandedAliases[curFrame] = aliasData end end end end if subframe then mergeList( subframes, newFrame ) -- Randomise starting frame for "Any *" aliases, as long as the alias is the only subframe if frames.randomise ~= 'never' and subframes.randomise == nil and frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then subframes.randomise = true else subframes.randomise = false end if frames.randomise ~= 'never' then frames.randomise = false end if subframe == 'last' then -- No point having a subframe containing a single frame, -- or the subframe being the only frame if #subframes == 1 or #splitFrames == i and #frames == 0 then mergeList( frames, subframes ) else table.insert( frames, subframes ) end subframes = {} subframe = nil end else -- Randomise starting frame for "Any *" aliases, as long as the alias is the only frame if frames.randomise == nil and frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then frames.randomise = true elseif frames.randomise ~= 'never' then frames.randomise = false end mergeList( frames, newFrame ) end end frames.aliasReference = expandedAliases return frames end --[[Returns a new table with the parts of the parent frame added to the alias --]] function p.getAlias( aliasFrames, parentFrame ) -- If alias is just a name, return the parent frame with the new name if type( aliasFrames ) == 'string' then local expandedFrame = mw.clone( parentFrame ) expandedFrame.name = aliasFrames return { expandedFrame } end -- Single frame alias, put in list if aliasFrames.name then aliasFrames = { aliasFrames } end local expandedFrames = {} for i, aliasFrame in ipairs( aliasFrames ) do local expandedFrame if type( aliasFrame ) == 'string' then expandedFrame = { name = aliasFrame } else expandedFrame = cloneTable( aliasFrame ) end expandedFrame.title = parentFrame.title or expandedFrame.title expandedFrame.mod = parentFrame.mod or expandedFrame.mod expandedFrame.num = parentFrame.num or expandedFrame.num expandedFrame.text = parentFrame.text or expandedFrame.text expandedFrames[i] = expandedFrame end return expandedFrames end function p.expandAlias( parentFrame, alias ) return p.getAlias( alias, parentFrame ) end function p.stringifyFrame( frame ) if not frame.name then return '' end return string.format( '[%s]%s:%s,%s[%s]', frame.title or '', frame.mod or 'Minecraft', frame.name, frame.num or '', frame.text or '' ) end function p.stringifyFrames( frames ) for i, frame in ipairs( frames ) do frames[i] = p.stringifyFrame( frame ) end return table.concat( frames, ';' ) end -- Splits up the frame text into its parts function p.makeFrame( frameText, mod ) -- Simple frame with no parts if not frameText:match( '[%[:,]' ) then return { mod = mod, name = mw.text.trim( frameText ), } end frameText = frameText:gsub( '%s*([%[%]:,;])%s*', '%1' ) local frame = {} frame.title = frameText:match( '^%[([^%]]+)%]' ) frame.mod = frameText:match( '([^:%]]+):' ) or mod local vanilla = { v = 1, vanilla = 1, mc = 1, minecraft = 1 } if frame.mod and vanilla[mw.ustring.lower( frame.mod )] or frame.mod == '' then frame.mod = nil end local nameStart = ( frameText:find( ':' ) or frameText:find( '%]' ) or 0 ) + 1 if nameStart - 1 == #frameText then nameStart = 1 end frame.name = frameText:sub( nameStart, ( frameText:find( '[,%[]', nameStart ) or 0 ) - 1 ) frame.num = math.floor( frameText:match( ',(%d+)' ) or 0 ) if frame.num == 0 then frame.num = nil end frame.text = frameText:match( '%[([^%]]+)%]$' ) return frame end function p.getParts( frameText, mod ) return p.makeFrame( frameText, mod ) end return p 7a4753f23cf2769641694b0e726a6995a284f788 21 20 2024-04-28T15:47:53Z Axxyyy 2 1 revision imported Scribunto text/plain local p = {} local i18n = { filename = 'Invicon $1', legacyFilename = 'Grid $1.png', modLink = 'Mods/$1/$2', moduleAliases = [[Module:Inventory slot/Aliases]], moduleInvData = [[Module:InvSprite]], moduleModData = 'Module:InvSprite/Mods/$1', moduleRandom = [[Module:Random]], moduleSprite = [[Module:Sprite]], -- List of special prefixes which should be handled by -- other modules (such as being moved outside links) prefixes = { any = 'Any', matching = 'Matching', damaged = 'Damaged', }, suffixes = { be = 'BE', lce = 'LCE', }, templateFileUrl = 'FileUrl', } p.i18n = i18n local random = require( i18n.moduleRandom ).random local sprite = require( i18n.moduleSprite ).sprite local aliases = mw.loadData( i18n.moduleAliases ) local ids = mw.loadData( i18n.moduleInvData ).ids local modIds = {} local pageName = mw.title.getCurrentTitle().text -- Performs a simple recursive clone of a table's values local function cloneTable( origTable ) local newTable = {} for k, v in pairs( origTable ) do if type( v ) == 'table' then v = cloneTable( v ) end newTable[k] = v end return newTable end --[[Merges a list, or inserts a string or table into a table --]] local function mergeList( parentTable, content ) local i = #parentTable + 1 if content[1] then -- Merge list into table for _, v in ipairs( content ) do parentTable[i] = v i = i + 1 end else -- Add strings or tables to table parentTable[i] = content end end -- Creates the HTML for an item local function makeItem( frame, i, args ) local item = mw.html.create( 'span' ):addClass( 'invslot-item' ) if args.imgclass then item:addClass( args.imgclass ) end if frame.name == '' then return item end local category local title = frame.title or mw.text.trim( args.title or '' ) local mod = frame.mod local name = frame.name or '' local num = frame.num local description = frame.text local img, idData if mod then local modData = modIds[mod] if not modData and mw.title.new( i18n.moduleModData:gsub( '%$1', mod ) ).exists then modData = mw.loadData( i18n.moduleModData:gsub( '%$1', mod ) ) modIds[mod] = modData end if modData and modData[name] then idData = modData[name] else img = i18n.legacyFilename:gsub( '%$1', name .. ' (' .. mod .. ')' ) end elseif ids[name] then idData = ids[name] elseif name:match( '\.gif$' ) or name:match( '\.png$' ) then img = i18n.filename:gsub( '%$1', name ) -- Remove file extension from name name = name:sub( 0, -5 ) end local link = args.link or '' if link == '' then if mod then link = i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name ) else link = name:gsub( '^' .. i18n.prefixes.damaged .. ' ', '' ) for _, suffix in pairs( i18n.suffixes ) do link = link:gsub( ' ' .. suffix .. '$', '' ) end end elseif link:lower() == 'none' then link = nil end if link == pageName then link = nil end local formattedTitle local plainTitle if title == '' then plainTitle = name elseif title:lower() ~= 'none' then plainTitle = title:gsub( '\\\\', '&#92;' ):gsub( '\\&', '&#38;' ) local formatPattern = '&[0-9a-fk-or]' if plainTitle:match( formatPattern ) then formattedTitle = title plainTitle = plainTitle:gsub( formatPattern, '' ) end if plainTitle == '' then plainTitle = name else plainTitle = plainTitle:gsub( '&#92;', '\\' ):gsub( '&#38;', '&' ) end elseif link then if img then formattedTitle = '' else plainTitle = '' end end item:attr{ ['data-minetip-title'] = formattedTitle, ['data-minetip-text'] = description } if img then -- & is re-escaped because mw.html treats attributes -- as plain text, but MediaWiki doesn't local escapedTitle = ( plainTitle or '' ):gsub( '&', '&#38;' ) item:addClass( 'invslot-item-image' ) :wikitext( '[[File:', img, '|32x32px|link=', link or '', '|', escapedTitle, ']]' ) else local image if mod then image = args.spritesheet or mod .. 'Sprite.png' end if link then item:wikitext( '[[', link, '|' ) end local image, spriteCat = sprite{ iddata = idData, title = plainTitle, image = image, data = 'InvSprite', nourl = args.nourl, } item:node( image ) category = spriteCat end if num and num > 1 and num < 1000 then if img and link then item:wikitext( '[[', link, '|' ) end local number = item :tag( 'span' ) :addClass( 'invslot-stacksize' ) :attr{ title = plainTitle } :wikitext( num ) if numStyle then number:cssText( numStyle ) end if img and link then item:wikitext( ']]' ) end end if not img and link then item:wikitext( ']]' ) end item:wikitext( category ) return item end -- Main entry point function p.slot( f ) local args = f.args or f if f == mw.getCurrentFrame() and args[1] == nil then args = f:getParent().args end if not args.parsed then args[1] = mw.text.trim( args[1] or '' ) end local modData = { aliases = args.modaliases or '', default = args.mod } if modData.aliases ~= '' then modData.aliases = mw.loadData( 'Module:' .. modData.aliases ) else modData.aliases = nil end if args.mod == '' then modData.default = nil end local frames if args.parsed then frames = args[1] elseif args[1] ~= '' then local randomise = args.class == 'invslot-large' and 'never' or nil frames = p.parseFrameText( args[1], randomise, false, modData ) end local animated = frames and #frames > 1 local imgClass = args.imgclass local numStyle = args.numstyle local body = mw.html.create( 'span' ):addClass( 'invslot' ):css{ ['vertical-align'] = args.align } if animated then body:addClass( 'animated' ) end if args.class then body:addClass( args.class ) end if args.style then body:cssText( args.style ) end if ( args.default or '' ) ~= '' then body:css( 'background-image', f:expandTemplate{ title = i18n.templateFileUrl, args = { args.default .. '.png' } } ) end --mw.logObject( frames ) if not frames then return tostring( body ) end local activeFrame = frames.randomise == true and random( #frames ) or 1 for i, frame in ipairs( frames ) do local item -- Table is a list, must contain subframes if frame[1] then item = body:tag( 'span' ):addClass( 'animated-subframe' ) local subActiveFrame = frame.randomise and random( #frame ) or 1 for sI, sFrame in ipairs( frame ) do local sItem = makeItem( sFrame, sI, args ) item:node( sItem ) if sI == subActiveFrame then sItem:addClass( 'animated-active' ) end end else item = makeItem( frame, i, args ) body:node( item ) end if i == activeFrame and animated then item:addClass( 'animated-active' ) end end return tostring( body ) end --[[Parses the frame text into a table of frames and subframes, expanding aliases (and optionally retaining a reference), and deciding if the slot can be randomised --]] function p.parseFrameText( framesText, randomise, aliasReference, modData ) local frames = { randomise = randomise } local subframes = {} local subframe local expandedAliases local splitFrames = mw.text.split( mw.text.trim( framesText ), '%s*;%s*' ) for _, frameText in ipairs( splitFrames ) do frameText = frameText:gsub( '^%s*{%s*', function() subframe = true return '' end ) if subframe then frameText = frameText:gsub( '%s*}%s*$', function() subframe = 'last' return '' end ) end local frame = p.makeFrame( frameText, modData and modData.default ) local newFrame = frame if aliases or modData.aliases then local id = frame.name if frame.mod then id = frame.mod .. ':' .. id end local alias = modData and modData.aliases and modData.aliases[id] or aliases and aliases[id] if alias then newFrame = p.getAlias( alias, frame ) if aliasReference then local curFrame = #frames + 1 local aliasData = { frame = frame, length = #newFrame } if subframe then if not subframes.aliasReference then subframes.aliasReference = {} end subframes.aliasReference[#subframes + 1] = aliasData else if not expandedAliases then expandedAliases = {} end expandedAliases[curFrame] = aliasData end end end end if subframe then mergeList( subframes, newFrame ) -- Randomise starting frame for "Any *" aliases, as long as the alias is the only subframe if frames.randomise ~= 'never' and subframes.randomise == nil and frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then subframes.randomise = true else subframes.randomise = false end if frames.randomise ~= 'never' then frames.randomise = false end if subframe == 'last' then -- No point having a subframe containing a single frame, -- or the subframe being the only frame if #subframes == 1 or #splitFrames == i and #frames == 0 then mergeList( frames, subframes ) else table.insert( frames, subframes ) end subframes = {} subframe = nil end else -- Randomise starting frame for "Any *" aliases, as long as the alias is the only frame if frames.randomise == nil and frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then frames.randomise = true elseif frames.randomise ~= 'never' then frames.randomise = false end mergeList( frames, newFrame ) end end frames.aliasReference = expandedAliases return frames end --[[Returns a new table with the parts of the parent frame added to the alias --]] function p.getAlias( aliasFrames, parentFrame ) -- If alias is just a name, return the parent frame with the new name if type( aliasFrames ) == 'string' then local expandedFrame = mw.clone( parentFrame ) expandedFrame.name = aliasFrames return { expandedFrame } end -- Single frame alias, put in list if aliasFrames.name then aliasFrames = { aliasFrames } end local expandedFrames = {} for i, aliasFrame in ipairs( aliasFrames ) do local expandedFrame if type( aliasFrame ) == 'string' then expandedFrame = { name = aliasFrame } else expandedFrame = cloneTable( aliasFrame ) end expandedFrame.title = parentFrame.title or expandedFrame.title expandedFrame.mod = parentFrame.mod or expandedFrame.mod expandedFrame.num = parentFrame.num or expandedFrame.num expandedFrame.text = parentFrame.text or expandedFrame.text expandedFrames[i] = expandedFrame end return expandedFrames end function p.expandAlias( parentFrame, alias ) return p.getAlias( alias, parentFrame ) end function p.stringifyFrame( frame ) if not frame.name then return '' end return string.format( '[%s]%s:%s,%s[%s]', frame.title or '', frame.mod or 'Minecraft', frame.name, frame.num or '', frame.text or '' ) end function p.stringifyFrames( frames ) for i, frame in ipairs( frames ) do frames[i] = p.stringifyFrame( frame ) end return table.concat( frames, ';' ) end -- Splits up the frame text into its parts function p.makeFrame( frameText, mod ) -- Simple frame with no parts if not frameText:match( '[%[:,]' ) then return { mod = mod, name = mw.text.trim( frameText ), } end frameText = frameText:gsub( '%s*([%[%]:,;])%s*', '%1' ) local frame = {} frame.title = frameText:match( '^%[([^%]]+)%]' ) frame.mod = frameText:match( '([^:%]]+):' ) or mod local vanilla = { v = 1, vanilla = 1, mc = 1, minecraft = 1 } if frame.mod and vanilla[mw.ustring.lower( frame.mod )] or frame.mod == '' then frame.mod = nil end local nameStart = ( frameText:find( ':' ) or frameText:find( '%]' ) or 0 ) + 1 if nameStart - 1 == #frameText then nameStart = 1 end frame.name = frameText:sub( nameStart, ( frameText:find( '[,%[]', nameStart ) or 0 ) - 1 ) frame.num = math.floor( frameText:match( ',(%d+)' ) or 0 ) if frame.num == 0 then frame.num = nil end frame.text = frameText:match( '%[([^%]]+)%]$' ) return frame end function p.getParts( frameText, mod ) return p.makeFrame( frameText, mod ) end return p 7a4753f23cf2769641694b0e726a6995a284f788 Template:Int Usage 10 52 90 2023-08-13T20:45:42Z Translation-category>שמזן 0 he translation wikitext text/x-wiki {{TranslateThis|source = Template:Int Usage |ha = Amfani |sv = Användning |ay = Apnaqaña |kri = Aw fɔ yuz am |bm = Baarakɛcogo |lb = Benotzung |ku = Bikaranîn |da = Brug |nb,nn,no = Bruk |gd = Cleachdadh |cy = Defnydd |lg = Enkozesa |eu = Erabilera |sm = Fa’aoga |mg = Fampiasana |om = Fayyadama |uz = Foydalanish |af,li,nl,nl-be,nl-informal,vl,zea = Gebruik |fy = Gebrûk |hu = Használat |bar = Heagnomma |lus = Hman dan |haw = Hoʻohana |rw = Ikoreshwa |so = Isticmaalka |az = İstifadə |ht = Itilizasyon |gn = Jeporu rehegua |et = Kasutamine |fi = Käyttö |hmn = Kev siv |bs,cnr,hr,sh,sh-el,sh-latn,sr-el = Korištenje |ln = Kosalela yango |ny = Kugwiritsa ntchito |diq = Kullanım|tr = Kullanım |sn = Kushandiswa |lt = Lietošana |yo = Lilo |ts = Matirhiselo |sw = Matumizi |lv = Naudojimas |is = Notkun |ig = Ojiji |ceb,fil,tl = Paggamit |su = Pamakéan |ilo = Panagusar |jv = Panggunaan |id,ms = Penggunaan |sk = Použitie |cs = Používání |ak,tw = Sɛnea wɔde di dwuma |vi = Sử dụng |st = Tšebeliso |nso = Tšhomišo |zu = Ukusetshenziswa |xh = Ukusetyenziswa |tk = Ulanylyşy |sl = Uporaba |en,en-au,en-ca,en-gb,en-ie,en-in,en-nz,en-us = Usage |ga = Úsáid |es,es-419,gl,pt,pt-br,pt-pt,qu = Uso |co = Usu |la = Ut uti |fr,fr-be,fr-ca,fr-ch,fr-fr,fr-lu,frc = Utilisation |ca = Utilització |ro = Utilizare |it = Utilizzo |eo = Uzado |mt = Użu |pl = Użycie |als,de,de-formal,de-at,de-ch,de-de,gsw = Verwendung |mi = Whakamahinga |ee = Zazã |el = Χρήση|pnt = Χρήση |be = Выкарыстанне |be-tarask = Выкарыстаньне |uk = Використання |ru = Использование |tg = Истифода |kk = Қолданылуы |ky = Колдонылышы |tt = Куллану |sh-cyrl,sh-ec,sr,sr-cyrl,sr-ec = Коришћење |bg = Употреба|mk = Употреба |mn = Хэрэглээ |hy,hyw = օգտագործումը |ka,xmf = გამოყენება |as = ব্যৱহাৰ |bn = ব্যবহার |doi = प्रयोग करना |bh,bho = प्रयोग के बारे में बतावल गइल बा |hi,mai,ne = प्रयोग |sa = प्रयोगः |mr = वापर |pa = ਵਰਤੋਂ |or = ବ୍ୟବହାର |ml = ഉപയോഗം |gu = ઉપયોગ |kn = ಬಳಕೆ |ta = பயன்பாடு |te = వాడుక |si = භාවිතය |my = အသုံးပြုပုံ |th = การใช้งาน |km = ការប្រើប្រាស់ |lo = ການນຳໃຊ້ |mni = ꯁꯤꯖꯤꯟꯅꯕꯥ |am = አጠቃቀም |ti = ኣጠቓቕማ |ko = 사용법 |ja = 使い方<!--or 使用法--> |yue,zh,zh-cn,zh-hans,zh-hant,zh-hk,zh-mo,zh-sg,zh-tw = 用法 |he = שימוש |yi = באַניץ |ar,ary,arz = استخدام |sd,ur = استعمال |uy = ئىشلىتىلىشى |ckb = بەکارهێنان |fa = کاربرد |ps = کارول |dv = ބޭނުން ކުރުމެވެ }}<noinclude>{{doc}}</noinclude> 8daedbcbcd7444e04c6824104aa49074edba81d6 Template:Documentation header 10 18 34 2023-10-30T03:53:53Z crafting>Noisy miner 0 Undo revision 2324252 by [[Special:Contributions/Tree apple tree|Tree apple tree]] ([[User talk:Tree apple tree|talk]]) wikitext text/x-wiki <includeonly>{{#invoke: documentation | docPage }}</includeonly><noinclude> {{documentation|content= Used on the top of a documentation page. }} [[Category:Documentation templates|*]] [[tr:Şablon:Belgeleme üstbilgisi]] [[zh:Template:Documentation header]] fbfd2788ba2c707df1f24456c97112cb96e156fb Template:Lua 10 20 38 2023-10-30T03:57:43Z crafting>Noisy miner 0 wikitext text/x-wiki {{msgbox | image = Lua logo.svg | text = This {{#ifeq:{{NAMESPACENUMBER}}|828|module depends on|template uses}} '''<includeonly>[[</includeonly>Module:{{ucfirst: {{PAGENAME:{{{1|{{#ifeq:{{SUBPAGENAME}}|doc|{{BASEPAGENAME}}|{{PAGENAME}}}}}}}}} }}<includeonly>]]</includeonly>''', {{ #if: {{{data|}}} | with data stored in [[Module:{{ ucfirst: {{PAGENAME:{{{data}}}}} }}]]{{ #if: {{{data2|}}} | &#32;and [[Module:{{ ucfirst: {{PAGENAME:{{{data2}}}}} }}]] }} | a script written in [[wp:Lua|Lua]] }}.<br>{{ #if: {{{data|}}} | These scripts are written in [[wp:Lua|Lua]]. }} }}<includeonly>{{ #if: {{{nocat|}}} | | {{#switch: {{SUBPAGENAME}} | doc | sandbox | testcases = | {{#switch: {{NAMESPACENUMBER}} | 0 | 10 = [[Category:Lua-based templates]] }} }} }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwikis on the documentation page --> </noinclude> 1af47d4a3d4e04248e59e53d9a82bc8a35d14d51 Template:Yesno 10 9 16 2023-10-30T04:43:55Z crafting>Legendary Super Saiyan Fennekin 0 [[w:help:Spam|Spam]] wikitext text/x-wiki <includeonly>{{#switch: {{lc: {{{1|}}}}} | y | yes | t | true | on | 1 = {{{yes|yes}}} | n | no | f | false | off | 0 | = {{{no|}}} |<!--blank--> = {{{blank|{{{no|}}} }}} | #default = {{{yes|yes}}} }}</includeonly><noinclude>{{documentation}} <!-- Put categories/interwiki on the documentation page --></noinclude> 07b4704a9447160b114f23c05e8378b7aa0ade85 17 16 2024-04-28T15:47:52Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{#switch: {{lc: {{{1|}}}}} | y | yes | t | true | on | 1 = {{{yes|yes}}} | n | no | f | false | off | 0 | = {{{no|}}} |<!--blank--> = {{{blank|{{{no|}}} }}} | #default = {{{yes|yes}}} }}</includeonly><noinclude>{{documentation}} <!-- Put categories/interwiki on the documentation page --></noinclude> 07b4704a9447160b114f23c05e8378b7aa0ade85 Module:Inventory slot/Aliases 828 12 22 2023-10-30T11:21:50Z crafting>~aanzx 0 cleanup Scribunto text/plain local coloredDyes = { 'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Yellow Dye', 'Lime Dye', 'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye', 'Blue Dye', 'Brown Dye', 'Green Dye', 'Red Dye', 'Black Dye', } local aliases = { -- Common fuel types for furnace -- ['Any fuel'] = { 'Coal', 'Charcoal', { title = 'Log', name = 'Oak Log' }, { title = 'Overworld Planks', name = 'Oak Planks' }, 'Block of Coal' }, ['Any leather armor'] = { 'Leather Cap', 'Leather Tunic', 'Leather Pants', 'Leather Boots' }, ['Any golden armor'] = { 'Golden Helmet', 'Golden Chestplate', 'Golden Leggings', 'Golden Boots' }, ['Any chainmail armor'] = { 'Chainmail Helmet', 'Chainmail Chestplate', 'Chainmail Leggings', 'Chainmail Boots' }, ['Any iron armor'] = { 'Iron Helmet', 'Iron Chestplate', 'Iron Leggings', 'Iron Boots' }, ['Any diamond armor'] = { 'Diamond Helmet', 'Diamond Chestplate', 'Diamond Leggings', 'Diamond Boots' }, ['Any netherite armor'] = { 'Netherite Helmet', 'Netherite Chestplate', 'Netherite Leggings', 'Netherite Boots' }, ['Any Pottery Sherd'] = { 'Angler Pottery Sherd', 'Arms Up Pottery Sherd', 'Archer Pottery Sherd', 'Blade Pottery Sherd', 'Brewer Pottery Sherd', 'Burn Pottery Sherd', 'Danger Pottery Sherd', 'Explorer Pottery Sherd', 'Friend Pottery Sherd', 'Heart Pottery Sherd', 'Heartbreak Pottery Sherd', 'Howl Pottery Sherd', 'Miner Pottery Sherd', 'Mourner Pottery Sherd', 'Plenty Pottery Sherd', 'Prize Pottery Sherd', 'Sheaf Pottery Sherd', 'Shelter Pottery Sherd', 'Skull Pottery Sherd', 'Snort Pottery Sherd', 'Brick' }, -- stones -- ['Any Cobblestone or Blackstone'] = { 'Cobblestone', 'Blackstone' }, ['Any stone-tier block'] = { 'Cobblestone', 'Blackstone', 'Cobbled Deepslate' }, -- Display names -- ['Broken Elytra'] = { title = '&eElytra', name = 'Broken Elytra' }, ['Clay (block)'] = { title = 'Clay', name = 'Clay (block)' }, --remove on Nether Update's release if bedrock also changes the item name ['Clay (ball)'] = { title = 'Clay', name = 'Clay (ball)' }, --remove on Nether Update's release if bedrock also changes the item name ['Banner Pattern Flower'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'}, ['Banner Pattern Flower Charge'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'}, ['Banner Pattern Creeper Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'}, ['Banner Pattern Creeper'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'}, ['Banner Pattern Bordure Indented'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Bordure Indented'}, ['Banner Pattern Field Masoned'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Field Masoned'}, ['Banner Pattern Skull Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'}, ['Banner Pattern Skull'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'}, ['Banner Pattern Thing'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'}, ['Banner Pattern Mojang'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'}, ['Banner Pattern Globe'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Globe'}, ['Banner Pattern Snout'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Snout'}, ['Banner Pattern Piglin'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Snout'}, ['Button'] = { title = 'Button', name = 'Stone Button'}, ['Wooden Button'] = { title = 'Button', name = 'Oak Button'}, ['Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Arrow Loaded Crossbow' }, ['Damaged Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Arrow Loaded Crossbow' }, ['Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Firework Loaded Crossbow' }, ['Damaged Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Firework Loaded Crossbow' }, ['Illager Banner'] = { title = '&6&oIllager Banner', name = 'Illager Banner', text = '&7Cyan Lozenge/&7Light Gray Base/&7Gray Pale/&7Light Gray Bordure/&7Black Fess/&7Light Gray Per Fess'}, ['Half Filled Bundle'] = { title = 'Bundle', name = 'Half Filled Bundle' }, ['Filled Bundle'] = { title = 'Bundle', name = 'Filled Bundle' }, -- Weapons -- ['Trident'] = { name = 'Trident', text = '/&7 When in main hand:/&#160;&21.1 Attack Speed/&#160;&29 Attack Damage'}, ['Trident BE'] = { name = 'Trident', text = '/&9 +8 Attack Damage'}, -- Bedrock and Education Edition display names -- ['Elytra Wings'] = { title = 'Elytra Wings', name = 'Elytra' }, ['Cooked Beef'] = { title = 'Cooked Beef', name = 'Steak' }, ['Map (no markers)'] = { title = 'Map', name = 'Map', text = 'Display Markers: &cNo' }, ['Locator Map'] = { title = 'Map', name = 'Map', text = 'Display Markers: &aYes' }, -- Chemistry -- ['Lead (element)'] = { title = 'Lead', name = 'Lead (element)' }, ['Water (compound)'] = { title = 'Water', name = 'Water (compound)' }, ['Chloride'] = { 'Calcium Chloride', 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' }, ['Sparkler'] = { 'Orange Sparkler', 'Blue Sparkler', 'Red Sparkler', 'Purple Sparkler', 'Green Sparkler' }, ['Matching Chloride'] = { 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' }, ['Matching Colored Torch'] = { 'Blue Torch', 'Red Torch', 'Purple Torch', 'Green Torch' }, ['Matching Glow Stick'] = { 'White Glow Stick', 'Orange Glow Stick', 'Magenta Glow Stick', 'Light Blue Glow Stick', 'Yellow Glow Stick', 'Lime Glow Stick', 'Pink Glow Stick', 'Gray Glow Stick', 'Cyan Glow Stick', 'Purple Glow Stick', 'Blue Glow Stick', 'Brown Glow Stick', 'Green Glow Stick', 'Red Glow Stick' }, } -- Tooltip colors -- local yellowTooltips = { 'Creeper Head', 'Damaged Elytra', 'Dragon Head', 'Dragon\'s Breath', 'Elytra', 'Head', 'Heart of the Sea', 'Piglin Head', 'Player Head', 'Skeleton Skull', 'Totem of Undying', 'Wither Skeleton Skull', 'Zombie Head', } for _, name in ipairs( yellowTooltips ) do aliases[name] = { title = '&e', name = name } end local aquaTooltips = { 'Beacon', 'Conduit', 'Golden Apple', } for _, name in ipairs( aquaTooltips ) do aliases[name] = { title = '&b', name = name } end local lightPurpleTooltips = { 'Dragon Egg', 'Structure Block', 'Structure Void', 'Jigsaw Block', 'Barrier', } for _, name in ipairs( lightPurpleTooltips ) do aliases[name] = { title = '&d', name = name } end local orangeItalicTooltips = { 'Ominous Banner', } for _, name in ipairs( orangeItalicTooltips ) do aliases[name] = { title = '&6&o', name = name } end -- Animated icons -- local animatedIcons = { 'Blue Key', 'Bubble Column', 'Calibrated Sculk Sensor', 'Compass', 'Clock', 'Crimson Hyphae', 'Crimson Stem', 'Debug Stick', 'Fire', 'Gear', 'Heat Block', 'Lava', 'Lodestone Compass', 'Magma Block', 'Magma Block BE', 'Nether Portal', 'Prismarine', 'Prismarine Slab', 'Prismarine Stairs', 'Prismarine Wall', 'Recovery Compass', 'Red Key', 'Sea Lantern', 'Stonecutter', 'Soul Fire', 'Sculk', 'Sculk Shrieker'; 'Sculk Shrieker BE', 'Sculk Sensor', 'Sculk Sensor BE', 'Sculk Vein', 'Warped Hyphae', 'Warped Stem', 'Water', 'Written Book', 'Yellow Key' } for _, icon in ipairs( animatedIcons ) do aliases[icon] = icon .. '.gif' end -- Some things are both animated and yellow -- local animatedIconsYellowTooltips = { 'Enchanted Book', 'Nether Star', 'Bottle o\' Enchanting', } for _, name in ipairs( animatedIconsYellowTooltips ) do aliases[name] = { title = '&e', name = name .. '.gif' } end -- Some things are both animated and aqua -- local animatedIconsAquaTooltips = { 'End Crystal', } for _, name in ipairs( animatedIconsAquaTooltips ) do aliases[name] = { title = '&b', name = name .. '.gif' } end -- Some things are both animated and purple -- local animatedIconsPurpleTooltips = { 'Command Block', 'Chain Command Block', 'Repeating Command Block', 'Enchanted Golden Apple', } for _, name in ipairs( animatedIconsPurpleTooltips ) do aliases[name] = { title = '&d', name = name .. '.gif' } end -- Bedrock Edition Items -- local animatedEditionItems = { BE = { 'Lodestone Compass', }, LCE = { } } for edition, items in pairs(animatedEditionItems) do for _, item in ipairs(items) do local name = item .. ' ' .. edition aliases[name] = { title = item, name = name .. '.gif' } end end -- Tools and weapons -- local tools = { {'Wooden', 'Sword', 1.6, 4 }, {'Stone', 'Sword', 1.6, 5 }, {'Iron', 'Sword', 1.6, 6 }, {'Golden', 'Sword', 1.6, 4 }, {'Diamond', 'Sword', 1.6, 7 }, {'Netherite', 'Sword', 1.6, 8 }, {'Wooden', 'Pickaxe', 1.2, 2 }, {'Stone', 'Pickaxe', 1.2, 3 }, {'Iron', 'Pickaxe', 1.2, 4 }, {'Golden', 'Pickaxe', 1.2, 2 }, {'Diamond', 'Pickaxe', 1.2, 5 }, {'Netherite', 'Pickaxe', 1.2, 6 }, {'Wooden', 'Axe', 0.8, 7 }, {'Stone', 'Axe', 0.8, 9 }, {'Iron', 'Axe', 0.9, 9 }, {'Golden', 'Axe', 1, 7 }, {'Diamond', 'Axe', 1, 9 }, {'Netherite', 'Axe', 1, 10 }, {'Wooden', 'Shovel', 1, 2.5 }, {'Stone', 'Shovel', 1, 3.5 }, {'Iron', 'Shovel', 1, 4.5 }, {'Golden', 'Shovel', 1, 2.5 }, {'Diamond', 'Shovel', 1, 5.5 }, {'Netherite', 'Shovel', 1.6, 6.5 }, {'Wooden', 'Hoe', 1, 1 }, {'Stone', 'Hoe', 2, 1 }, {'Iron', 'Hoe', 3, 1 }, {'Golden', 'Hoe', 1, 1 }, {'Diamond', 'Hoe', 4, 1 }, {'Netherite', 'Hoe', 4, 1 } } local materialGroups = {} local toolGroups = {} for _, toolProps in ipairs( tools ) do local aliasName = toolProps[1] .. ' ' .. toolProps[2] local damagedName = 'Damaged ' .. aliasName local text = '/&7When in main hand:/&#160;&2' .. toolProps[3] .. ' Attack Speed/&#160;&2' .. toolProps[4] .. ' Attack Damage' aliases[aliasName] = { title = aliasName, name = aliasName, text = text } -- add damaged here as well so it gets the proper tooltip aliases[damagedName] = { title = aliasName, name = damagedName, text = text } local materialGroup = toolProps[1]:lower(); local toolGroup = toolProps[2]:lower(); if toolProps[2] ~= 'Sword' then if materialGroups[materialGroup] == nil then materialGroups[materialGroup] = {} end table.insert( materialGroups[materialGroup], aliases[aliasName] ) end if toolGroups[toolGroup] == nil then toolGroups[toolGroup] = {} end table.insert( toolGroups[toolGroup], aliases[aliasName] ) end for materialGroup, items in pairs( materialGroups ) do aliases['Any ' .. materialGroup .. ' tools'] = items end for toolGroup, items in pairs( toolGroups ) do aliases['Any ' .. toolGroup] = items end -- Tools and weapons in Bedrock Edition -- local toolsBE = { {'Wooden', 'Sword', 4 }, {'Stone', 'Sword', 5 }, {'Iron', 'Sword', 6 }, {'Golden', 'Sword', 4 }, {'Diamond', 'Sword', 7 }, {'Netherite', 'Sword', 8 }, {'Wooden', 'Pickaxe', 2 }, {'Stone', 'Pickaxe', 3 }, {'Iron', 'Pickaxe', 4 }, {'Golden', 'Pickaxe', 2 }, {'Diamond', 'Pickaxe', 5 }, {'Netherite', 'Pickaxe', 6 }, {'Wooden', 'Axe', 3 }, {'Stone', 'Axe', 4 }, {'Iron', 'Axe', 5 }, {'Golden', 'Axe', 3 }, {'Diamond', 'Axe', 6 }, {'Netherite', 'Axe', 7 }, {'Wooden', 'Shovel', 1 }, {'Stone', 'Shovel', 2 }, {'Iron', 'Shovel', 3 }, {'Golden', 'Shovel', 1 }, {'Diamond', 'Shovel', 4 }, {'Netherite', 'Shovel', 5 }, {'Wooden', 'Hoe', 2 }, {'Stone', 'Hoe', 3 }, {'Iron', 'Hoe', 4 }, {'Golden', 'Hoe', 2 }, {'Diamond', 'Hoe', 5 }, {'Netherite', 'Hoe', 6 } } for _, toolProps in ipairs( toolsBE ) do local aliasName = toolProps[1] .. ' ' .. toolProps[2] aliases[aliasName .. ' BE'] = { title = aliasName, name = aliasName, text = '/&9+' .. toolProps[3] .. ' Attack Damage'} end -- Lists of item variants -- local itemVariants = { ['Dye'] = mw.clone( coloredDyes ), ['Colored Dye'] = coloredDyes, ['Dyed Wool'] = { 'Orange Wool', 'Magenta Wool', 'Light Blue Wool', 'Yellow Wool', 'Lime Wool', 'Pink Wool', 'Gray Wool', 'Light Gray Wool', 'Cyan Wool', 'Purple Wool', 'Blue Wool', 'Brown Wool', 'Green Wool', 'Red Wool', 'Black Wool', }, ['Dyed Bed'] = { 'Orange Bed', 'Magenta Bed', 'Light Blue Bed', 'Yellow Bed', 'Lime Bed', 'Pink Bed', 'Gray Bed', 'Light Gray Bed', 'Cyan Bed', 'Purple Bed', 'Blue Bed', 'Brown Bed', 'Green Bed', 'Red Bed', 'Black Bed', }, ['Dyed Carpet'] = { 'Orange Carpet', 'Magenta Carpet', 'Light Blue Carpet', 'Yellow Carpet', 'Lime Carpet', 'Pink Carpet', 'Gray Carpet', 'Light Gray Carpet', 'Cyan Carpet', 'Purple Carpet', 'Blue Carpet', 'Brown Carpet', 'Green Carpet', 'Red Carpet', 'Black Carpet', }, ['Dyed Terracotta'] = { 'White Terracotta', 'Orange Terracotta', 'Magenta Terracotta', 'Light Blue Terracotta', 'Yellow Terracotta', 'Lime Terracotta', 'Pink Terracotta', 'Gray Terracotta', 'Light Gray Terracotta', 'Cyan Terracotta', 'Purple Terracotta', 'Blue Terracotta', 'Brown Terracotta', 'Green Terracotta', 'Red Terracotta', 'Black Terracotta', }, ['Dyed Candle'] = { 'White Candle', 'Orange Candle', 'Magenta Candle', 'Light Blue Candle', 'Yellow Candle', 'Lime Candle', 'Pink Candle', 'Gray Candle', 'Light Gray Candle', 'Cyan Candle', 'Purple Candle', 'Blue Candle', 'Brown Candle', 'Green Candle', 'Red Candle', 'Black Candle', }, ['Flower'] = { 'Oxeye Daisy', 'Cornflower', 'Lily of the Valley', 'Wither Rose', 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip', 'Azure Bluet', 'Allium', 'Blue Orchid', 'Poppy', 'Dandelion', 'Torchflower' }, ['Mushroom'] = { 'Red Mushroom', 'Brown Mushroom' }, ['Quartz Block'] = { 'Block of Quartz', 'Chiseled Quartz Block', 'Quartz Pillar' }, ['Red Sandstone'] = { 'Red Sandstone', 'Cut Red Sandstone', 'Chiseled Red Sandstone', 'Smooth Red Sandstone' }, ['Sandstone'] = { 'Sandstone', 'Cut Sandstone', 'Chiseled Sandstone', 'Smooth Sandstone' }, ['Stone Bricks'] = { 'Stone Bricks', 'Mossy Stone Bricks', 'Cracked Stone Bricks', 'Chiseled Stone Bricks' }, ['Stone Slab'] = { 'Stone Slab', 'Smooth Stone Slab', 'Cobblestone Slab', 'Mossy Cobblestone Slab', 'Stone Brick Slab', 'Mossy Stone Brick Slab', 'Andesite Slab', 'Polished Andesite Slab', 'Diorite Slab', 'Polished Diorite Slab', 'Granite Slab', 'Polished Granite Slab', 'Sandstone Slab', 'Cut Sandstone Slab', 'Smooth Sandstone Slab', 'Red Sandstone Slab', 'Cut Red Sandstone Slab', 'Smooth Red Sandstone Slab', 'Brick Slab', { title = 'Prismarine Slab', name = 'Prismarine Slab.gif' }, 'Prismarine Brick Slab', 'Dark Prismarine Slab', 'Nether Brick Slab', 'Red Nether Brick Slab', 'Quartz Slab', 'Smooth Quartz Slab', 'Purpur Slab', 'End Stone Brick Slab', 'Petrified Oak Slab', 'Blackstone Slab', 'Polished Blackstone Slab', 'Polished Blackstone Brick Slab', 'Cobbled Deepslate Slab', 'Deepslate Brick Slab', 'Deepslate Tile Slab', 'Polished Deepslate Slab' }, ['Stone Stairs'] = { 'Stone Stairs', 'Cobblestone Stairs', 'Mossy Cobblestone Stairs', 'Stone Brick Stairs', 'Mossy Stone Brick Stairs', 'Andesite Stairs', 'Polished Andesite Stairs', 'Diorite Stairs', 'Polished Diorite Stairs', 'Granite Stairs', 'Polished Granite Stairs', 'Sandstone Stairs', 'Smooth Sandstone Stairs', 'Red Sandstone Stairs', 'Smooth Red Sandstone Stairs', 'Brick Stairs', { title = 'Prismarine Stairs', name = 'Prismarine Stairs.gif' }, 'Prismarine Brick Stairs', 'Dark Prismarine Stairs', 'Nether Brick Stairs', 'Red Nether Brick Stairs', 'Quartz Stairs', 'Smooth Quartz Stairs', 'Purpur Stairs', 'End Stone Brick Stairs', 'Blackstone Stairs', 'Polished Blackstone Stairs', 'Polished Blackstone Brick Stairs', 'Cobbled Deepslate Stairs', 'Deepslate Brick Stairs', 'Deepslate Tile Stairs', 'Polished Deepslate Stairs' }, ['Purpur Block'] = { 'Purpur Block', 'Purpur Pillar' }, ['Stone'] = { 'Stone', 'Andesite', 'Granite', 'Diorite', 'Polished Andesite', 'Polished Granite', 'Polished Diorite' }, ['Tulip'] = { 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip' }, ['Prismarine'] = { { title = 'Prismarine', name = 'Prismarine.gif' }, 'Prismarine Bricks', 'Dark Prismarine' }, ['Ore'] = { 'Coal Ore', 'Iron Ore', 'Gold Ore', 'Lapis Lazuli Ore', 'Redstone Ore', 'Emerald Ore', 'Diamond Ore', 'Nether Quartz Ore', 'Nether Gold Ore', 'Deepslate Coal Ore', 'Deepslate Copper Ore', 'Deepslate Emerald Ore', 'Deepslate Iron Ore', 'Deepslate Gold Ore', 'Deepslate Lapis Lazuli Ore', 'Deepslate Redstone Ore', 'Deepslate Diamond Ore'}, ['Dead Coral Block'] = { 'Dead Tube Coral Block', 'Dead Brain Coral Block', 'Dead Bubble Coral Block', 'Dead Fire Coral Block', 'Dead Horn Coral Block' }, ['Coral Block'] = { 'Tube Coral Block', 'Brain Coral Block', 'Bubble Coral Block', 'Fire Coral Block', 'Horn Coral Block' }, ['Dead Coral'] = { 'Dead Tube Coral', 'Dead Brain Coral', 'Dead Bubble Coral', 'Dead Fire Coral', 'Dead Horn Coral' }, ['Dead Coral Fan'] = { 'Dead Tube Coral Fan', 'Dead Brain Coral Fan', 'Dead Bubble Coral Fan', 'Dead Fire Coral Fan', 'Dead Horn Coral Fan' }, ['Coral'] = { 'Tube Coral', 'Brain Coral', 'Bubble Coral', 'Fire Coral', 'Horn Coral' }, ['Coral Fan'] = { 'Tube Coral Fan', 'Brain Coral Fan', 'Bubble Coral Fan', 'Fire Coral Fan', 'Horn Coral Fan' }, ['Wall'] = { 'Cobblestone Wall', 'Mossy Cobblestone Wall', 'Stone Brick Wall', 'Mossy Stone Brick Wall', 'Andesite Wall', 'Diorite Wall', 'Granite Wall', 'Sandstone Wall', 'Red Sandstone Wall', 'Brick Wall', { title = 'Prismarine Wall', name = 'Prismarine Wall.gif' }, 'Nether Brick Wall', 'Red Nether Brick Wall', 'End Stone Brick Wall', 'Blackstone Wall', 'Polished Blackstone Wall', 'Polished Blackstone Brick Wall', 'Cobbled Deepslate Wall', 'Deepslate Brick Wall', 'Deepslate Tile Wall', 'Polished Deepslate Wall' }, ['Torch'] = { 'Torch', 'Soul Torch' }, ['Lantern'] = { 'Lantern', 'Soul Lantern' }, ['Fungus'] = { 'Crimson Fungus', 'Warped Fungus' }, ['Fungi'] = { 'Crimson Fungus', 'Warped Fungus' }, ['Roots'] = { 'Crimson Roots', 'Warped Roots' }, ['Nylium'] = { 'Crimson Nylium', 'Warped Nylium' }, ['Soul Sand'] = { 'Soul Sand', 'Soul Soil' }, ['Campfire'] = { 'Campfire', 'Soul Campfire' }, ['Blackstone'] = { 'Blackstone', 'Polished Blackstone', 'Chiseled Polished Blackstone', 'Polished Blackstone Bricks', 'Cracked Polished Blackstone Bricks' }, ['Stone Button'] = { 'Stone Button', 'Polished Blackstone Button' }, ['Stone Pressure Plate'] = { 'Stone Pressure Plate', 'Polished Blackstone Pressure Plate' }, ['Nether Wood Pressure Plate'] = { 'Crimson Pressure Plate', 'Warped Pressure Plate' }, ['Nether Wood Fence'] = { 'Crimson Fence', 'Warped Fence' }, ['Nether Wood Trapdoor'] = { 'Crimson Trapdoor', 'Warped Trapdoor' }, ['Nether Wood Fence Gate'] = { 'Crimson Fence Gate', 'Warped Fence Gate' }, ['Nether Wood Stairs'] = { 'Crimson Stairs', 'Warped Stairs' }, ['Nether Wood Door'] = { 'Crimson Door', 'Warped Door' }, ['Nether Wood Sign'] = { 'Crimson Sign', 'Warped Sign' }, ['Candle'] = { 'Candle', 'White Candle', 'Orange Candle', 'Magenta Candle', 'Light Blue Candle', 'Yellow Candle', 'Lime Candle', 'Pink Candle', 'Gray Candle', 'Light Gray Candle', 'Cyan Candle', 'Purple Candle', 'Blue Candle', 'Brown Candle', 'Green Candle', 'Red Candle', 'Black Candle' }, ['Copper Block'] = { 'Copper Block', 'Exposed Copper Block', 'Weathered Copper Block', 'Oxidized Copper Block', 'Waxed Copper Block', 'Waxed Exposed Copper Block', 'Waxed Weathered Copper Block' }, ['Cut Copper'] = { 'Cut Copper', 'Exposed Cut Copper', 'Weathered Cut Copper', 'Oxidized Cut Copper', 'Waxed Cut Copper', 'Waxed Exposed Cut Copper', 'Waxed Weathered Cut Copper' }, ['Cut Copper Stairs'] = { 'Cut Copper Stairs', 'Exposed Cut Copper Stairs', 'Weathered Cut Copper Stairs', 'Oxidized Cut Copper Stairs', 'Waxed Cut Copper Stairs', 'Waxed Exposed Cut Copper Stairs', 'Waxed Weathered Cut Copper Stairs' }, ['Cut Copper Slab'] = { 'Cut Copper Slab', 'Exposed Cut Copper Slab', 'Weathered Cut Copper Slab', 'Oxidized Cut Copper Slab', 'Waxed Cut Copper Slab', 'Waxed Exposed Cut Copper Slab', 'Waxed Weathered Cut Copper Slab' }, } table.insert( itemVariants['Dye'], 1, 'White Dye' ) for aliasName, aliasItems in pairs( itemVariants ) do aliases['Any ' .. aliasName] = aliasItems aliases['Matching ' .. aliasName] = aliasItems end -- Copper -- local copperstuff = { ['Matching (Weathered) Copper Block'] = {'Copper Block', 'Lightly Weathered Copper Block', 'Semi-Weathered Copper Block', 'Weathered Copper BlocK'}, ['Matching (Weathered) Cut Copper'] = {'Cut Copper', 'Lightly Weathered Cut Copper', 'Semi-Weathered Cut Copper', 'Weathered Cut Copper'}, ['Matching Waxed (Weathered) Copper Block'] = {'Waxed Copper Block', 'Waxed Lightly Weathered Copper Block', 'Waxed Semi-Weathered Copper Block'}, ['Matching Waxed (Weathered) Cut Copper'] = {'Waxed Cut Copper', 'Waxed Lightly Weathered Cut Copper', 'Waxed Semi-Weathered Cut Copper'}, } local function map(tbl, f) local t = {} for k,v in pairs(tbl) do t[k] = f(v) end return t end for k, v in pairs(copperstuff) do aliases[k] = v local k1 = k:gsub(' Block$', '') local v1 = map(v, function(s) return s:gsub(' Block$', '') end) aliases[k1 .. 'Slab'] = map(v1, function(s) return s .. 'Slab' end) aliases[k1 .. 'Stairs'] = map(v1, function(s) return s .. 'Stairs' end) end -- Discs -- local discs = { { '13', 'C418', }, { 'Cat', 'C418', 'cat' }, { 'Blocks', 'C418', 'blocks' }, { 'Chirp', 'C418', 'chirp' }, { 'Far', 'C418', 'far' }, { 'Mall', 'C418', 'mall' }, { 'Mellohi', 'C418', 'mellohi' }, { 'Stal', 'C418', 'stal' }, { 'Strad', 'C418', 'strad' }, { 'Ward', 'C418', 'ward' }, { '11', 'C418', }, { 'Wait', 'C418', 'wait' }, { 'Otherside', 'Lena Raine', 'otherside' }, { 'Pigstep', 'Lena Raine', }, { '5', 'Samuel Åberg', }, { 'Relic', 'Aaron Cherof', }, } for _, disc in ipairs( discs ) do local name = 'Music Disc ' .. disc[1] local artist = disc[2] local trackname = disc[1] if disc[3] ~= nil then trackname = disc[3] end aliases[name] = { title = '&bMusic Disc', name = name, text = '&7' .. artist .. ' - ' .. trackname } end -- Disc Fragments -- local disc_fragments = { { '5', }, } for _, disc_fragment in ipairs( disc_fragments ) do local name = 'Disc Fragment ' .. disc_fragment[1] local trackname = disc_fragment[1] if disc_fragment[2] ~= nil then trackname = disc_fragment[2] end aliases[name] = { title = '&fDisc Fragment', name = name, text = '&7Music Disc - ' .. trackname } end -- Damaged armor, note it skips tools and weapons as they are handled above to add the damage tooltip -- local damagedItems = { 'Bow', 'Brush', 'Carrot on a Stick', 'Chainmail Boots', 'Chainmail Chestplate', 'Chainmail Helmet', 'Chainmail Leggings', 'Crossbow', 'Diamond Boots', 'Diamond Chestplate', 'Diamond Helmet', 'Diamond Leggings', 'Elytra', 'Fishing Rod', 'Flint and Steel', 'Golden Boots', 'Golden Chestplate', 'Golden Helmet', 'Golden Leggings', 'Iron Boots', 'Iron Chestplate', 'Iron Helmet', 'Iron Leggings', 'Leather Boots', 'Leather Tunic', 'Leather Cap', 'Leather Pants', 'Netherite Boots', 'Netherite Chestplate', 'Netherite Helmet', 'Netherite Leggings', 'Shears', 'Shield' } for _, item in ipairs( damagedItems ) do local name = 'Damaged ' .. item aliases[name] = { title = item, name = name } end -- Banners and colored items -- local patterns = { 'Base Dexter Canton', 'Base', 'Base Gradient', 'Base Indented', 'Base Sinister Canton', 'Bend', 'Bend Sinister', 'Bordure', 'Bordure Indented', 'Chevron', 'Chief Dexter Canton', 'Chief', 'Chief Indented', 'Chief Sinister Canton', 'Creeper Charge', 'Cross', 'Fess', 'Field Masoned', 'Flower Charge', 'Globe', 'Gradient', 'Inverted Chevron', 'Lozenge', 'Thing', 'Pale', 'Pale Dexter', 'Pale Sinister', 'Paly', 'Per Bend', 'Per Bend Inverted', 'Per Bend Sinister', 'Per Bend Sinister Inverted', 'Per Fess', 'Per Fess Inverted', 'Per Pale', 'Per Pale Inverted', 'Piglin', 'Snout', 'Roundel', 'Saltire', 'Skull Charge' } local colors = { 'White', 'Orange', 'Magenta', 'Light Blue', 'Yellow', 'Lime', 'Pink', 'Gray', 'Light Gray', 'Cyan', 'Purple', 'Blue', 'Brown', 'Green', 'Red', 'Black' } -- Firework Stars -- local fireworkStar = {} for _, color in ipairs( colors ) do local name = color .. ' Firework Star' aliases[name] = { title = 'Firework Star', name = name, text = '&7' .. color } table.insert( fireworkStar, aliases[name] ) for _, pattern in ipairs( patterns ) do name = color .. ' ' .. pattern .. ' Banner' aliases[name] = { title = 'Banner', name = name, text = '&7' .. color .. ' ' .. pattern } end end aliases['Any Firework Star'] = fireworkStar aliases['Matching Firework Star'] = fireworkStar -- Items that use the sixteen colors -- local coloredItems = { 'Balloon', 'Banner', 'Bed', 'Carpet', 'Concrete', 'Concrete Powder', 'Glazed Terracotta', 'Hardened $1 Stained Glass', 'Hardened $1 Stained Glass Pane', 'Shield', 'Shulker Box', 'Stained Glass', 'Stained Glass Pane', 'Wool' } for _, item in ipairs( coloredItems ) do local coloredItemAliases = {} local itemName = '' for _, color in ipairs( colors ) do if item:find( '%$1' ) then itemName = item:gsub( '%$1', color ) else itemName = color .. ' ' .. item end table.insert( coloredItemAliases, itemName ) end item = item:gsub( '%$1 ', '') aliases['Any ' .. item] = coloredItemAliases aliases['Matching ' .. item] = coloredItemAliases end -- list of all potions with no effects local noEffects = { 'Water Bottle', 'Awkward Potion', 'Thick Potion', 'Mundane Potion', 'Uncraftable Potion', 'Splash Water Bottle', 'Awkward Splash Potion', 'Thick Splash Potion', 'Mundane Splash Potion', 'Uncraftable Splash Potion', 'Lingering Water Bottle', 'Awkward Lingering Potion', 'Thick Lingering Potion', 'Mundane Lingering Potion', 'Uncraftable Lingering Potion', 'Tipped Arrow', 'Arrow of Splashing', 'Uncraftable Tipped Arrow', } for _, name in ipairs(noEffects) do aliases[name] = { name = name, text = '&7No effects' } end -- start these lists with the no effect items as names are not normal local potionItems = { ['Potion'] = { aliases['Water Bottle'], aliases['Awkward Potion'], aliases['Thick Potion'], aliases['Mundane Potion'], }, ['Splash Potion'] = { aliases['Splash Water Bottle'], aliases['Awkward Splash Potion'], aliases['Thick Splash Potion'], aliases['Mundane Splash Potion'], }, ['Lingering Potion'] = { aliases['Lingering Water Bottle'], aliases['Awkward Lingering Potion'], aliases['Thick Lingering Potion'], aliases['Mundane Lingering Potion'], }, ['Tipped Arrow'] = { aliases['Arrow of Splashing'], aliases['Tipped Arrow'], aliases['Tipped Arrow'], aliases['Tipped Arrow'], }, } -- Potions -- local effects = { -- durations are in the order normal, extended, enhanced {name = 'Regeneration', effect = '&9Regeneration', enhanced = 'II', durations = { normal = { '0:45', '1:30', '0:22' }, lingering = { '0:11', '0:22', '0:05' }, arrow = { '0:05', '0:11', '0:02' }}}, { name = 'Swiftness', effect = '&9Speed', enhanced = 'II', durations = { normal = { '3:00', '8:00', '1:30' }, lingering = { '0:45', '2:00', '0:22' }, arrow = { '0:22', '1:00', '0:11' }}}, { name = 'Fire Resistance', effect = '&9Fire Resistance', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Poison', effect = '&cPoison', enhanced = 'II', durations = { normal = { '0:45', '1:30', '0:21' }, lingering = { '0:11', '0:22', '0:05' }, arrow = { '0:05', '0:11', '0:02' }}}, { name = 'Healing', effect = '&9Instant Health', enhanced = 'II' }, { name = 'Night Vision', effect = '&9Night Vision', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Weakness', effect = '&cWeakness', durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}}, { name = 'Strength', effect = '&9Strength', enhanced = 'II', durations = { normal = { '3:00', '8:00', '1:30'}, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}}, { name = 'Slowness', effect = '&cSlowness', enhanced = 'IV', durations = { normal = { '1:30', '4:00', '0:20'}, lingering = {'0:22', '1:00', '0:05'}, arrow = { '0:11', '0:30', '0:02' }}}, { name = 'Leaping', effect = '&9Jump Boost', enhanced = 'II', durations = { normal = { '3:00', '8:00', '1:30' }, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}}, { name = 'Harming', effect = '&cInstant Damage', enhanced = 'II' }, { name = 'Water Breathing', effect = '&9Water Breathing', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Invisibility', effect = '&9Invisibility', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Slow Falling', effect = '&9Slow Falling', durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}}, { name = 'Luck', effect = '&9Luck', durations = { normal = { '5:00' }, lingering = { '1:15' }, arrow = { '0:37' }}}, { name = 'Decay', effect = '&cWither', durations = { normal = { '0:40' }, lingering = { '0:10' }, arrow = { '0:05' }}}, { name = 'the Turtle Master', text = '&cSlowness IV ($1)/&9Resistance III ($1)', enhanced = '&cSlowness VI ($1)/&9Resistance IV ($1)', durations = { normal = { '0:20', '0:40', '0:20' }, lingering = { '0:15', '0:45', '0:15' }, arrow = { '0:07', '0:22', '0:07' }}} } local types = { {name = 'Potion', durations = 'normal', text = 'Potion of '}, {name = 'Splash Potion', durations = 'normal', text = 'Splash Potion of '}, {name = 'Lingering Potion', durations = 'lingering', text = 'Lingering Potion of '}, {name = 'Tipped Arrow', durations = 'arrow', text = 'Arrow of '}, } for _, effect in ipairs(effects) do for _, type in ipairs(types) do -- form name, it will be reused local name = type.text .. effect.name local potionName = {} if type.name == 'Tipped Arrow' then potionName = type.text .. effect.name else potionName = type.text .. effect.name end -- if we have durations, add times if effect.durations then local durations = effect.durations[type.durations] -- turtle master is weird, so just do a fancy string replacement if effect.text then aliases[name] = { name = potionName, text = effect.text:gsub( '%$1', durations[1] ) } aliases[name .. ' Extended'] = { name = potionName, text = effect.text:gsub( '%$1', durations[2] ) } aliases[name .. ' Enhanced'] = { name = potionName, text = effect.enhanced:gsub( '%$1', durations[3] ) } else -- we always have normal aliases[name] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[1] ) } -- ensure we have extended if durations[2] then aliases[name .. ' Extended'] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[2] ) } -- and enhanced, currently there is nothing with a duration that can be extended but not enhanced if effect.enhanced then aliases[name .. ' Enhanced'] = { name = potionName, text = string.format( '%s %s (%s)', effect.effect, effect.enhanced, durations[3] ) } end end end else -- otherwise its just effect, currently every potion with no duration can be enhanced aliases[name] = { name = potionName, text = effect.effect} aliases[name .. ' Enhanced'] = { name = potionName, text = effect.effect .. ' ' .. effect.enhanced } end -- add the base potion to the any list table.insert(potionItems[type.name], aliases[name]) end end -- build the any lists for item, potionAliases in pairs( potionItems ) do aliases['Any ' .. item] = potionAliases aliases['Matching ' .. item] = potionAliases end -- Wood -- local woodTypes = { overworld = { 'Oak', 'Spruce', 'Birch', 'Jungle', 'Acacia', 'Dark Oak', 'Mangrove', 'Cherry', 'Bamboo', }, nether = { 'Crimson', 'Warped', }, both = {}, } local woodTypeWorld = {} for _, world in ipairs({'overworld', 'nether'}) do local woods = woodTypes[world] for _, type in ipairs(woods) do woodTypeWorld[type] = world table.insert(woodTypes.both, type) end end local woodItems = { overworld = { 'Wood', 'Log', 'Boat', 'Boat with Chest', 'Stripped $1 Log', 'Stripped $1 Wood', 'Wood Planks', 'Wood Slab', 'Wood Stairs', 'Wood Pressure Plate', 'Wood Button', 'Wood Door', 'Wood Trapdoor', 'Wood Fence Gate', 'Wood Fence', 'Wood Sign', 'Sapling', }, nether = { 'Stem', 'Hyphae', 'Stripped $1 Stem', 'Stripped $1 Hyphae', }, both = { '$world Planks', '${Wood,Hyphae}', '${Log,Stem}', 'Stripped $1 ${Wood,Hyphae}', 'Stripped $1 ${Log,Stem}', 'Fence Gate', -- '$world Wood Fence', '$wood Fence', '$wood Door', '$wood Button', '$wood Pressure Plate', '$world Hanging Sign', '$wood Trapdoor', '$world $wood Slab', '$wood Stairs', 'Sign' } } local woodItemWorld = {} for world, items in pairs(woodItems) do for _, item in ipairs(items) do -- expand $world (should only happen in "both") if (item:find('%$world')) and world == 'both' then item = item:gsub('%$world ', '') woodItemWorld['Overworld ' .. item] = 'overworld' woodItemWorld['Nether ' .. item] = 'nether' end woodItemWorld[item] = world end end local woodBadItems = { ['Bamboo Hanging Sign'] = 1, ['Bamboo Sapling'] = 1, ['Bamboo Wood'] = 1, ['Bamboo Log'] = 1, ['Stripped Bamboo Wood'] = 1, ['Stripped Bamboo Log'] = 1, } local woodNameMapping = { ['Mangrove Sapling'] = 'Mangrove Propagule', ['Bamboo Boat'] = 'Bamboo Raft', ['Bamboo Boat with Chest'] = 'Bamboo Raft with Chest', } for item, world in pairs(woodItemWorld) do local itemName = '' local woodAliases = {} -- real "linkable" name local realItem = item:gsub('^Overworld ', '') realItem = realItem:gsub('^Nether ', '') for _, wood in ipairs(woodTypes[world]) do -- Parse ${,} (world-select) syntax local selector = (woodTypeWorld[wood] == 'overworld') and "%1" or "%2" itemName = realItem:gsub("%${(.-),(.-)}", selector) if itemName:find('%$wood') then itemName = itemName:gsub('%$wood', wood) elseif itemName:find('%$1') then itemName = itemName:gsub( '%$1', wood) else itemName = wood .. ' ' .. itemName end -- special handling if woodNameMapping[itemName] then itemName = woodNameMapping[itemName] end if not woodBadItems[itemName] then table.insert(woodAliases, itemName) end end -- Parse ${,} (world-select) syntax item = item:gsub("%${(.-),(.-)}", "%1 or %2") item = item:gsub('%$wood ', 'wood ') item = item:gsub('%$1 ', '') aliases['Any ' .. item] = woodAliases aliases['Matching ' .. item] = woodAliases end -- Bedrock Edition Items -- local editionItems = { BE = { 'Acacia Fence Gate', 'Beacon', 'Birch Fence Gate', 'Black Stained Glass Pane', 'Blue Ice', 'Blue Stained Glass Pane', 'Bow', 'Brown Stained Glass Pane', 'Bucket of Pufferfish', 'Bucket of Tropical Fish', 'Chest', 'Conduit', 'Creeper Head', 'Crimson Fence Gate', 'Crying Obsidian', 'Cyan Stained Glass Pane', 'Dark Oak Fence Gate', 'Dragon Egg', 'Dragon Head', 'Enchanting Table', 'End Gateway', 'End Portal Frame', 'End Portal', 'End Rod', 'Ender Chest', 'Flowing Lava', 'Glass Pane', 'Glowstone', 'Gray Stained Glass Pane', 'Green Stained Glass Pane', 'Head', 'Honey Block', 'Horn Coral Block', 'Iron Bars', 'Jack o\'Lantern', 'Jigsaw Block', 'Jungle Fence Gate', 'Jungle Leaves', 'Lava', 'Leather Horse Armor', 'Light Blue Stained Glass Pane', 'Light Gray Stained Glass Pane', 'Lime Stained Glass Pane', 'Magenta Stained Glass Pane', 'Magma Block', 'Map', 'Minecart with Command Block', 'Monster Spawner', 'Oak Fence Gate', 'Observer', 'Ocean Explorer Map', 'Orange Stained Glass Pane', 'Peony', 'Pink Stained Glass Pane', 'Purple Stained Glass Pane', 'Red Stained Glass Pane', 'Rose Bush', 'Scaffolding', 'Sea Lantern', 'Shroomlight', 'Skeleton Skull', 'Spawn Cat', 'Spawn Panda', 'Spawn Wandering Trader', 'Spawner', 'Spruce Fence Gate', 'Stonecutter', 'Structure Void', 'Trapped Chest', 'Warped Fence Gate', 'White Stained Glass Pane', 'Wither Skeleton Skull', 'Woodland Explorer Map', 'Yellow Stained Glass Pane', 'Zombie Head', }, LCE = { 'Peony', 'Rose Bush', 'Shrub' } } for edition, items in pairs(editionItems) do for _, item in ipairs(items) do local name = item .. ' ' .. edition aliases[name] = { title = item, name = name } end end -- Light blocks for level = 0, 15 do aliases["Light Block " .. level] = {title = "Light Block", name = "Light Block " .. level} aliases["Light " .. level] = {title = "&dLight", name = "Light " .. level} end aliases["Light Negative"] = {title = "&dLight", name = "Light Negative"} -- Smithing Template local smithing_templates = { { 'Netherite Upgrade', 'Diamond Equipment', 'Netherite Ingot' }, { 'Coast Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Dune Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Eye Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Host Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Raiser Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Rib Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Sentry Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Shaper Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Silence Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Snout Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Spire Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Tide Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Vex Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Ward Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Wayfinder Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Wild Armor Trim', 'Armor', 'Ingot & Crystals' }, } local smithing_template_array = {} local armor_trims_array = {} for _,smithing_template in pairs(smithing_templates) do local current_alias = { title = 'Smithing Template', name = smithing_template[1] .. ' Smithing Template', text = '&7' .. smithing_template[1] .. '//Applies to:/&#160;&9' .. smithing_template[2] .. '/&7Ingredients:/&#160;&9' .. smithing_template[3], } aliases[smithing_template[1]] = current_alias aliases[smithing_template[1] .. ' Smithing Template'] = current_alias table.insert(smithing_template_array,current_alias) if string.find(smithing_template[1],' Armor Trim$') then table.insert(armor_trims_array,current_alias) end end aliases['Matching Smithing Template'] = smithing_template_array aliases['Any Smithing Template'] = smithing_template_array aliases['Matching Armor Trim'] = armor_trims_array aliases['Any Armor Trim'] = armor_trims_array aliases['Matching Armor Trim Smithing Template'] = armor_trims_array aliases['Any Armor Trim Smithing Template'] = armor_trims_array return aliases 1a6002cece1708b8394290658b3cd5f4a57cda0a 23 22 2024-04-28T15:47:54Z Axxyyy 2 1 revision imported Scribunto text/plain local coloredDyes = { 'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Yellow Dye', 'Lime Dye', 'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye', 'Blue Dye', 'Brown Dye', 'Green Dye', 'Red Dye', 'Black Dye', } local aliases = { -- Common fuel types for furnace -- ['Any fuel'] = { 'Coal', 'Charcoal', { title = 'Log', name = 'Oak Log' }, { title = 'Overworld Planks', name = 'Oak Planks' }, 'Block of Coal' }, ['Any leather armor'] = { 'Leather Cap', 'Leather Tunic', 'Leather Pants', 'Leather Boots' }, ['Any golden armor'] = { 'Golden Helmet', 'Golden Chestplate', 'Golden Leggings', 'Golden Boots' }, ['Any chainmail armor'] = { 'Chainmail Helmet', 'Chainmail Chestplate', 'Chainmail Leggings', 'Chainmail Boots' }, ['Any iron armor'] = { 'Iron Helmet', 'Iron Chestplate', 'Iron Leggings', 'Iron Boots' }, ['Any diamond armor'] = { 'Diamond Helmet', 'Diamond Chestplate', 'Diamond Leggings', 'Diamond Boots' }, ['Any netherite armor'] = { 'Netherite Helmet', 'Netherite Chestplate', 'Netherite Leggings', 'Netherite Boots' }, ['Any Pottery Sherd'] = { 'Angler Pottery Sherd', 'Arms Up Pottery Sherd', 'Archer Pottery Sherd', 'Blade Pottery Sherd', 'Brewer Pottery Sherd', 'Burn Pottery Sherd', 'Danger Pottery Sherd', 'Explorer Pottery Sherd', 'Friend Pottery Sherd', 'Heart Pottery Sherd', 'Heartbreak Pottery Sherd', 'Howl Pottery Sherd', 'Miner Pottery Sherd', 'Mourner Pottery Sherd', 'Plenty Pottery Sherd', 'Prize Pottery Sherd', 'Sheaf Pottery Sherd', 'Shelter Pottery Sherd', 'Skull Pottery Sherd', 'Snort Pottery Sherd', 'Brick' }, -- stones -- ['Any Cobblestone or Blackstone'] = { 'Cobblestone', 'Blackstone' }, ['Any stone-tier block'] = { 'Cobblestone', 'Blackstone', 'Cobbled Deepslate' }, -- Display names -- ['Broken Elytra'] = { title = '&eElytra', name = 'Broken Elytra' }, ['Clay (block)'] = { title = 'Clay', name = 'Clay (block)' }, --remove on Nether Update's release if bedrock also changes the item name ['Clay (ball)'] = { title = 'Clay', name = 'Clay (ball)' }, --remove on Nether Update's release if bedrock also changes the item name ['Banner Pattern Flower'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'}, ['Banner Pattern Flower Charge'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'}, ['Banner Pattern Creeper Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'}, ['Banner Pattern Creeper'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'}, ['Banner Pattern Bordure Indented'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Bordure Indented'}, ['Banner Pattern Field Masoned'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Field Masoned'}, ['Banner Pattern Skull Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'}, ['Banner Pattern Skull'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'}, ['Banner Pattern Thing'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'}, ['Banner Pattern Mojang'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'}, ['Banner Pattern Globe'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Globe'}, ['Banner Pattern Snout'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Snout'}, ['Banner Pattern Piglin'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Snout'}, ['Button'] = { title = 'Button', name = 'Stone Button'}, ['Wooden Button'] = { title = 'Button', name = 'Oak Button'}, ['Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Arrow Loaded Crossbow' }, ['Damaged Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Arrow Loaded Crossbow' }, ['Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Firework Loaded Crossbow' }, ['Damaged Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Firework Loaded Crossbow' }, ['Illager Banner'] = { title = '&6&oIllager Banner', name = 'Illager Banner', text = '&7Cyan Lozenge/&7Light Gray Base/&7Gray Pale/&7Light Gray Bordure/&7Black Fess/&7Light Gray Per Fess'}, ['Half Filled Bundle'] = { title = 'Bundle', name = 'Half Filled Bundle' }, ['Filled Bundle'] = { title = 'Bundle', name = 'Filled Bundle' }, -- Weapons -- ['Trident'] = { name = 'Trident', text = '/&7 When in main hand:/&#160;&21.1 Attack Speed/&#160;&29 Attack Damage'}, ['Trident BE'] = { name = 'Trident', text = '/&9 +8 Attack Damage'}, -- Bedrock and Education Edition display names -- ['Elytra Wings'] = { title = 'Elytra Wings', name = 'Elytra' }, ['Cooked Beef'] = { title = 'Cooked Beef', name = 'Steak' }, ['Map (no markers)'] = { title = 'Map', name = 'Map', text = 'Display Markers: &cNo' }, ['Locator Map'] = { title = 'Map', name = 'Map', text = 'Display Markers: &aYes' }, -- Chemistry -- ['Lead (element)'] = { title = 'Lead', name = 'Lead (element)' }, ['Water (compound)'] = { title = 'Water', name = 'Water (compound)' }, ['Chloride'] = { 'Calcium Chloride', 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' }, ['Sparkler'] = { 'Orange Sparkler', 'Blue Sparkler', 'Red Sparkler', 'Purple Sparkler', 'Green Sparkler' }, ['Matching Chloride'] = { 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' }, ['Matching Colored Torch'] = { 'Blue Torch', 'Red Torch', 'Purple Torch', 'Green Torch' }, ['Matching Glow Stick'] = { 'White Glow Stick', 'Orange Glow Stick', 'Magenta Glow Stick', 'Light Blue Glow Stick', 'Yellow Glow Stick', 'Lime Glow Stick', 'Pink Glow Stick', 'Gray Glow Stick', 'Cyan Glow Stick', 'Purple Glow Stick', 'Blue Glow Stick', 'Brown Glow Stick', 'Green Glow Stick', 'Red Glow Stick' }, } -- Tooltip colors -- local yellowTooltips = { 'Creeper Head', 'Damaged Elytra', 'Dragon Head', 'Dragon\'s Breath', 'Elytra', 'Head', 'Heart of the Sea', 'Piglin Head', 'Player Head', 'Skeleton Skull', 'Totem of Undying', 'Wither Skeleton Skull', 'Zombie Head', } for _, name in ipairs( yellowTooltips ) do aliases[name] = { title = '&e', name = name } end local aquaTooltips = { 'Beacon', 'Conduit', 'Golden Apple', } for _, name in ipairs( aquaTooltips ) do aliases[name] = { title = '&b', name = name } end local lightPurpleTooltips = { 'Dragon Egg', 'Structure Block', 'Structure Void', 'Jigsaw Block', 'Barrier', } for _, name in ipairs( lightPurpleTooltips ) do aliases[name] = { title = '&d', name = name } end local orangeItalicTooltips = { 'Ominous Banner', } for _, name in ipairs( orangeItalicTooltips ) do aliases[name] = { title = '&6&o', name = name } end -- Animated icons -- local animatedIcons = { 'Blue Key', 'Bubble Column', 'Calibrated Sculk Sensor', 'Compass', 'Clock', 'Crimson Hyphae', 'Crimson Stem', 'Debug Stick', 'Fire', 'Gear', 'Heat Block', 'Lava', 'Lodestone Compass', 'Magma Block', 'Magma Block BE', 'Nether Portal', 'Prismarine', 'Prismarine Slab', 'Prismarine Stairs', 'Prismarine Wall', 'Recovery Compass', 'Red Key', 'Sea Lantern', 'Stonecutter', 'Soul Fire', 'Sculk', 'Sculk Shrieker'; 'Sculk Shrieker BE', 'Sculk Sensor', 'Sculk Sensor BE', 'Sculk Vein', 'Warped Hyphae', 'Warped Stem', 'Water', 'Written Book', 'Yellow Key' } for _, icon in ipairs( animatedIcons ) do aliases[icon] = icon .. '.gif' end -- Some things are both animated and yellow -- local animatedIconsYellowTooltips = { 'Enchanted Book', 'Nether Star', 'Bottle o\' Enchanting', } for _, name in ipairs( animatedIconsYellowTooltips ) do aliases[name] = { title = '&e', name = name .. '.gif' } end -- Some things are both animated and aqua -- local animatedIconsAquaTooltips = { 'End Crystal', } for _, name in ipairs( animatedIconsAquaTooltips ) do aliases[name] = { title = '&b', name = name .. '.gif' } end -- Some things are both animated and purple -- local animatedIconsPurpleTooltips = { 'Command Block', 'Chain Command Block', 'Repeating Command Block', 'Enchanted Golden Apple', } for _, name in ipairs( animatedIconsPurpleTooltips ) do aliases[name] = { title = '&d', name = name .. '.gif' } end -- Bedrock Edition Items -- local animatedEditionItems = { BE = { 'Lodestone Compass', }, LCE = { } } for edition, items in pairs(animatedEditionItems) do for _, item in ipairs(items) do local name = item .. ' ' .. edition aliases[name] = { title = item, name = name .. '.gif' } end end -- Tools and weapons -- local tools = { {'Wooden', 'Sword', 1.6, 4 }, {'Stone', 'Sword', 1.6, 5 }, {'Iron', 'Sword', 1.6, 6 }, {'Golden', 'Sword', 1.6, 4 }, {'Diamond', 'Sword', 1.6, 7 }, {'Netherite', 'Sword', 1.6, 8 }, {'Wooden', 'Pickaxe', 1.2, 2 }, {'Stone', 'Pickaxe', 1.2, 3 }, {'Iron', 'Pickaxe', 1.2, 4 }, {'Golden', 'Pickaxe', 1.2, 2 }, {'Diamond', 'Pickaxe', 1.2, 5 }, {'Netherite', 'Pickaxe', 1.2, 6 }, {'Wooden', 'Axe', 0.8, 7 }, {'Stone', 'Axe', 0.8, 9 }, {'Iron', 'Axe', 0.9, 9 }, {'Golden', 'Axe', 1, 7 }, {'Diamond', 'Axe', 1, 9 }, {'Netherite', 'Axe', 1, 10 }, {'Wooden', 'Shovel', 1, 2.5 }, {'Stone', 'Shovel', 1, 3.5 }, {'Iron', 'Shovel', 1, 4.5 }, {'Golden', 'Shovel', 1, 2.5 }, {'Diamond', 'Shovel', 1, 5.5 }, {'Netherite', 'Shovel', 1.6, 6.5 }, {'Wooden', 'Hoe', 1, 1 }, {'Stone', 'Hoe', 2, 1 }, {'Iron', 'Hoe', 3, 1 }, {'Golden', 'Hoe', 1, 1 }, {'Diamond', 'Hoe', 4, 1 }, {'Netherite', 'Hoe', 4, 1 } } local materialGroups = {} local toolGroups = {} for _, toolProps in ipairs( tools ) do local aliasName = toolProps[1] .. ' ' .. toolProps[2] local damagedName = 'Damaged ' .. aliasName local text = '/&7When in main hand:/&#160;&2' .. toolProps[3] .. ' Attack Speed/&#160;&2' .. toolProps[4] .. ' Attack Damage' aliases[aliasName] = { title = aliasName, name = aliasName, text = text } -- add damaged here as well so it gets the proper tooltip aliases[damagedName] = { title = aliasName, name = damagedName, text = text } local materialGroup = toolProps[1]:lower(); local toolGroup = toolProps[2]:lower(); if toolProps[2] ~= 'Sword' then if materialGroups[materialGroup] == nil then materialGroups[materialGroup] = {} end table.insert( materialGroups[materialGroup], aliases[aliasName] ) end if toolGroups[toolGroup] == nil then toolGroups[toolGroup] = {} end table.insert( toolGroups[toolGroup], aliases[aliasName] ) end for materialGroup, items in pairs( materialGroups ) do aliases['Any ' .. materialGroup .. ' tools'] = items end for toolGroup, items in pairs( toolGroups ) do aliases['Any ' .. toolGroup] = items end -- Tools and weapons in Bedrock Edition -- local toolsBE = { {'Wooden', 'Sword', 4 }, {'Stone', 'Sword', 5 }, {'Iron', 'Sword', 6 }, {'Golden', 'Sword', 4 }, {'Diamond', 'Sword', 7 }, {'Netherite', 'Sword', 8 }, {'Wooden', 'Pickaxe', 2 }, {'Stone', 'Pickaxe', 3 }, {'Iron', 'Pickaxe', 4 }, {'Golden', 'Pickaxe', 2 }, {'Diamond', 'Pickaxe', 5 }, {'Netherite', 'Pickaxe', 6 }, {'Wooden', 'Axe', 3 }, {'Stone', 'Axe', 4 }, {'Iron', 'Axe', 5 }, {'Golden', 'Axe', 3 }, {'Diamond', 'Axe', 6 }, {'Netherite', 'Axe', 7 }, {'Wooden', 'Shovel', 1 }, {'Stone', 'Shovel', 2 }, {'Iron', 'Shovel', 3 }, {'Golden', 'Shovel', 1 }, {'Diamond', 'Shovel', 4 }, {'Netherite', 'Shovel', 5 }, {'Wooden', 'Hoe', 2 }, {'Stone', 'Hoe', 3 }, {'Iron', 'Hoe', 4 }, {'Golden', 'Hoe', 2 }, {'Diamond', 'Hoe', 5 }, {'Netherite', 'Hoe', 6 } } for _, toolProps in ipairs( toolsBE ) do local aliasName = toolProps[1] .. ' ' .. toolProps[2] aliases[aliasName .. ' BE'] = { title = aliasName, name = aliasName, text = '/&9+' .. toolProps[3] .. ' Attack Damage'} end -- Lists of item variants -- local itemVariants = { ['Dye'] = mw.clone( coloredDyes ), ['Colored Dye'] = coloredDyes, ['Dyed Wool'] = { 'Orange Wool', 'Magenta Wool', 'Light Blue Wool', 'Yellow Wool', 'Lime Wool', 'Pink Wool', 'Gray Wool', 'Light Gray Wool', 'Cyan Wool', 'Purple Wool', 'Blue Wool', 'Brown Wool', 'Green Wool', 'Red Wool', 'Black Wool', }, ['Dyed Bed'] = { 'Orange Bed', 'Magenta Bed', 'Light Blue Bed', 'Yellow Bed', 'Lime Bed', 'Pink Bed', 'Gray Bed', 'Light Gray Bed', 'Cyan Bed', 'Purple Bed', 'Blue Bed', 'Brown Bed', 'Green Bed', 'Red Bed', 'Black Bed', }, ['Dyed Carpet'] = { 'Orange Carpet', 'Magenta Carpet', 'Light Blue Carpet', 'Yellow Carpet', 'Lime Carpet', 'Pink Carpet', 'Gray Carpet', 'Light Gray Carpet', 'Cyan Carpet', 'Purple Carpet', 'Blue Carpet', 'Brown Carpet', 'Green Carpet', 'Red Carpet', 'Black Carpet', }, ['Dyed Terracotta'] = { 'White Terracotta', 'Orange Terracotta', 'Magenta Terracotta', 'Light Blue Terracotta', 'Yellow Terracotta', 'Lime Terracotta', 'Pink Terracotta', 'Gray Terracotta', 'Light Gray Terracotta', 'Cyan Terracotta', 'Purple Terracotta', 'Blue Terracotta', 'Brown Terracotta', 'Green Terracotta', 'Red Terracotta', 'Black Terracotta', }, ['Dyed Candle'] = { 'White Candle', 'Orange Candle', 'Magenta Candle', 'Light Blue Candle', 'Yellow Candle', 'Lime Candle', 'Pink Candle', 'Gray Candle', 'Light Gray Candle', 'Cyan Candle', 'Purple Candle', 'Blue Candle', 'Brown Candle', 'Green Candle', 'Red Candle', 'Black Candle', }, ['Flower'] = { 'Oxeye Daisy', 'Cornflower', 'Lily of the Valley', 'Wither Rose', 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip', 'Azure Bluet', 'Allium', 'Blue Orchid', 'Poppy', 'Dandelion', 'Torchflower' }, ['Mushroom'] = { 'Red Mushroom', 'Brown Mushroom' }, ['Quartz Block'] = { 'Block of Quartz', 'Chiseled Quartz Block', 'Quartz Pillar' }, ['Red Sandstone'] = { 'Red Sandstone', 'Cut Red Sandstone', 'Chiseled Red Sandstone', 'Smooth Red Sandstone' }, ['Sandstone'] = { 'Sandstone', 'Cut Sandstone', 'Chiseled Sandstone', 'Smooth Sandstone' }, ['Stone Bricks'] = { 'Stone Bricks', 'Mossy Stone Bricks', 'Cracked Stone Bricks', 'Chiseled Stone Bricks' }, ['Stone Slab'] = { 'Stone Slab', 'Smooth Stone Slab', 'Cobblestone Slab', 'Mossy Cobblestone Slab', 'Stone Brick Slab', 'Mossy Stone Brick Slab', 'Andesite Slab', 'Polished Andesite Slab', 'Diorite Slab', 'Polished Diorite Slab', 'Granite Slab', 'Polished Granite Slab', 'Sandstone Slab', 'Cut Sandstone Slab', 'Smooth Sandstone Slab', 'Red Sandstone Slab', 'Cut Red Sandstone Slab', 'Smooth Red Sandstone Slab', 'Brick Slab', { title = 'Prismarine Slab', name = 'Prismarine Slab.gif' }, 'Prismarine Brick Slab', 'Dark Prismarine Slab', 'Nether Brick Slab', 'Red Nether Brick Slab', 'Quartz Slab', 'Smooth Quartz Slab', 'Purpur Slab', 'End Stone Brick Slab', 'Petrified Oak Slab', 'Blackstone Slab', 'Polished Blackstone Slab', 'Polished Blackstone Brick Slab', 'Cobbled Deepslate Slab', 'Deepslate Brick Slab', 'Deepslate Tile Slab', 'Polished Deepslate Slab' }, ['Stone Stairs'] = { 'Stone Stairs', 'Cobblestone Stairs', 'Mossy Cobblestone Stairs', 'Stone Brick Stairs', 'Mossy Stone Brick Stairs', 'Andesite Stairs', 'Polished Andesite Stairs', 'Diorite Stairs', 'Polished Diorite Stairs', 'Granite Stairs', 'Polished Granite Stairs', 'Sandstone Stairs', 'Smooth Sandstone Stairs', 'Red Sandstone Stairs', 'Smooth Red Sandstone Stairs', 'Brick Stairs', { title = 'Prismarine Stairs', name = 'Prismarine Stairs.gif' }, 'Prismarine Brick Stairs', 'Dark Prismarine Stairs', 'Nether Brick Stairs', 'Red Nether Brick Stairs', 'Quartz Stairs', 'Smooth Quartz Stairs', 'Purpur Stairs', 'End Stone Brick Stairs', 'Blackstone Stairs', 'Polished Blackstone Stairs', 'Polished Blackstone Brick Stairs', 'Cobbled Deepslate Stairs', 'Deepslate Brick Stairs', 'Deepslate Tile Stairs', 'Polished Deepslate Stairs' }, ['Purpur Block'] = { 'Purpur Block', 'Purpur Pillar' }, ['Stone'] = { 'Stone', 'Andesite', 'Granite', 'Diorite', 'Polished Andesite', 'Polished Granite', 'Polished Diorite' }, ['Tulip'] = { 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip' }, ['Prismarine'] = { { title = 'Prismarine', name = 'Prismarine.gif' }, 'Prismarine Bricks', 'Dark Prismarine' }, ['Ore'] = { 'Coal Ore', 'Iron Ore', 'Gold Ore', 'Lapis Lazuli Ore', 'Redstone Ore', 'Emerald Ore', 'Diamond Ore', 'Nether Quartz Ore', 'Nether Gold Ore', 'Deepslate Coal Ore', 'Deepslate Copper Ore', 'Deepslate Emerald Ore', 'Deepslate Iron Ore', 'Deepslate Gold Ore', 'Deepslate Lapis Lazuli Ore', 'Deepslate Redstone Ore', 'Deepslate Diamond Ore'}, ['Dead Coral Block'] = { 'Dead Tube Coral Block', 'Dead Brain Coral Block', 'Dead Bubble Coral Block', 'Dead Fire Coral Block', 'Dead Horn Coral Block' }, ['Coral Block'] = { 'Tube Coral Block', 'Brain Coral Block', 'Bubble Coral Block', 'Fire Coral Block', 'Horn Coral Block' }, ['Dead Coral'] = { 'Dead Tube Coral', 'Dead Brain Coral', 'Dead Bubble Coral', 'Dead Fire Coral', 'Dead Horn Coral' }, ['Dead Coral Fan'] = { 'Dead Tube Coral Fan', 'Dead Brain Coral Fan', 'Dead Bubble Coral Fan', 'Dead Fire Coral Fan', 'Dead Horn Coral Fan' }, ['Coral'] = { 'Tube Coral', 'Brain Coral', 'Bubble Coral', 'Fire Coral', 'Horn Coral' }, ['Coral Fan'] = { 'Tube Coral Fan', 'Brain Coral Fan', 'Bubble Coral Fan', 'Fire Coral Fan', 'Horn Coral Fan' }, ['Wall'] = { 'Cobblestone Wall', 'Mossy Cobblestone Wall', 'Stone Brick Wall', 'Mossy Stone Brick Wall', 'Andesite Wall', 'Diorite Wall', 'Granite Wall', 'Sandstone Wall', 'Red Sandstone Wall', 'Brick Wall', { title = 'Prismarine Wall', name = 'Prismarine Wall.gif' }, 'Nether Brick Wall', 'Red Nether Brick Wall', 'End Stone Brick Wall', 'Blackstone Wall', 'Polished Blackstone Wall', 'Polished Blackstone Brick Wall', 'Cobbled Deepslate Wall', 'Deepslate Brick Wall', 'Deepslate Tile Wall', 'Polished Deepslate Wall' }, ['Torch'] = { 'Torch', 'Soul Torch' }, ['Lantern'] = { 'Lantern', 'Soul Lantern' }, ['Fungus'] = { 'Crimson Fungus', 'Warped Fungus' }, ['Fungi'] = { 'Crimson Fungus', 'Warped Fungus' }, ['Roots'] = { 'Crimson Roots', 'Warped Roots' }, ['Nylium'] = { 'Crimson Nylium', 'Warped Nylium' }, ['Soul Sand'] = { 'Soul Sand', 'Soul Soil' }, ['Campfire'] = { 'Campfire', 'Soul Campfire' }, ['Blackstone'] = { 'Blackstone', 'Polished Blackstone', 'Chiseled Polished Blackstone', 'Polished Blackstone Bricks', 'Cracked Polished Blackstone Bricks' }, ['Stone Button'] = { 'Stone Button', 'Polished Blackstone Button' }, ['Stone Pressure Plate'] = { 'Stone Pressure Plate', 'Polished Blackstone Pressure Plate' }, ['Nether Wood Pressure Plate'] = { 'Crimson Pressure Plate', 'Warped Pressure Plate' }, ['Nether Wood Fence'] = { 'Crimson Fence', 'Warped Fence' }, ['Nether Wood Trapdoor'] = { 'Crimson Trapdoor', 'Warped Trapdoor' }, ['Nether Wood Fence Gate'] = { 'Crimson Fence Gate', 'Warped Fence Gate' }, ['Nether Wood Stairs'] = { 'Crimson Stairs', 'Warped Stairs' }, ['Nether Wood Door'] = { 'Crimson Door', 'Warped Door' }, ['Nether Wood Sign'] = { 'Crimson Sign', 'Warped Sign' }, ['Candle'] = { 'Candle', 'White Candle', 'Orange Candle', 'Magenta Candle', 'Light Blue Candle', 'Yellow Candle', 'Lime Candle', 'Pink Candle', 'Gray Candle', 'Light Gray Candle', 'Cyan Candle', 'Purple Candle', 'Blue Candle', 'Brown Candle', 'Green Candle', 'Red Candle', 'Black Candle' }, ['Copper Block'] = { 'Copper Block', 'Exposed Copper Block', 'Weathered Copper Block', 'Oxidized Copper Block', 'Waxed Copper Block', 'Waxed Exposed Copper Block', 'Waxed Weathered Copper Block' }, ['Cut Copper'] = { 'Cut Copper', 'Exposed Cut Copper', 'Weathered Cut Copper', 'Oxidized Cut Copper', 'Waxed Cut Copper', 'Waxed Exposed Cut Copper', 'Waxed Weathered Cut Copper' }, ['Cut Copper Stairs'] = { 'Cut Copper Stairs', 'Exposed Cut Copper Stairs', 'Weathered Cut Copper Stairs', 'Oxidized Cut Copper Stairs', 'Waxed Cut Copper Stairs', 'Waxed Exposed Cut Copper Stairs', 'Waxed Weathered Cut Copper Stairs' }, ['Cut Copper Slab'] = { 'Cut Copper Slab', 'Exposed Cut Copper Slab', 'Weathered Cut Copper Slab', 'Oxidized Cut Copper Slab', 'Waxed Cut Copper Slab', 'Waxed Exposed Cut Copper Slab', 'Waxed Weathered Cut Copper Slab' }, } table.insert( itemVariants['Dye'], 1, 'White Dye' ) for aliasName, aliasItems in pairs( itemVariants ) do aliases['Any ' .. aliasName] = aliasItems aliases['Matching ' .. aliasName] = aliasItems end -- Copper -- local copperstuff = { ['Matching (Weathered) Copper Block'] = {'Copper Block', 'Lightly Weathered Copper Block', 'Semi-Weathered Copper Block', 'Weathered Copper BlocK'}, ['Matching (Weathered) Cut Copper'] = {'Cut Copper', 'Lightly Weathered Cut Copper', 'Semi-Weathered Cut Copper', 'Weathered Cut Copper'}, ['Matching Waxed (Weathered) Copper Block'] = {'Waxed Copper Block', 'Waxed Lightly Weathered Copper Block', 'Waxed Semi-Weathered Copper Block'}, ['Matching Waxed (Weathered) Cut Copper'] = {'Waxed Cut Copper', 'Waxed Lightly Weathered Cut Copper', 'Waxed Semi-Weathered Cut Copper'}, } local function map(tbl, f) local t = {} for k,v in pairs(tbl) do t[k] = f(v) end return t end for k, v in pairs(copperstuff) do aliases[k] = v local k1 = k:gsub(' Block$', '') local v1 = map(v, function(s) return s:gsub(' Block$', '') end) aliases[k1 .. 'Slab'] = map(v1, function(s) return s .. 'Slab' end) aliases[k1 .. 'Stairs'] = map(v1, function(s) return s .. 'Stairs' end) end -- Discs -- local discs = { { '13', 'C418', }, { 'Cat', 'C418', 'cat' }, { 'Blocks', 'C418', 'blocks' }, { 'Chirp', 'C418', 'chirp' }, { 'Far', 'C418', 'far' }, { 'Mall', 'C418', 'mall' }, { 'Mellohi', 'C418', 'mellohi' }, { 'Stal', 'C418', 'stal' }, { 'Strad', 'C418', 'strad' }, { 'Ward', 'C418', 'ward' }, { '11', 'C418', }, { 'Wait', 'C418', 'wait' }, { 'Otherside', 'Lena Raine', 'otherside' }, { 'Pigstep', 'Lena Raine', }, { '5', 'Samuel Åberg', }, { 'Relic', 'Aaron Cherof', }, } for _, disc in ipairs( discs ) do local name = 'Music Disc ' .. disc[1] local artist = disc[2] local trackname = disc[1] if disc[3] ~= nil then trackname = disc[3] end aliases[name] = { title = '&bMusic Disc', name = name, text = '&7' .. artist .. ' - ' .. trackname } end -- Disc Fragments -- local disc_fragments = { { '5', }, } for _, disc_fragment in ipairs( disc_fragments ) do local name = 'Disc Fragment ' .. disc_fragment[1] local trackname = disc_fragment[1] if disc_fragment[2] ~= nil then trackname = disc_fragment[2] end aliases[name] = { title = '&fDisc Fragment', name = name, text = '&7Music Disc - ' .. trackname } end -- Damaged armor, note it skips tools and weapons as they are handled above to add the damage tooltip -- local damagedItems = { 'Bow', 'Brush', 'Carrot on a Stick', 'Chainmail Boots', 'Chainmail Chestplate', 'Chainmail Helmet', 'Chainmail Leggings', 'Crossbow', 'Diamond Boots', 'Diamond Chestplate', 'Diamond Helmet', 'Diamond Leggings', 'Elytra', 'Fishing Rod', 'Flint and Steel', 'Golden Boots', 'Golden Chestplate', 'Golden Helmet', 'Golden Leggings', 'Iron Boots', 'Iron Chestplate', 'Iron Helmet', 'Iron Leggings', 'Leather Boots', 'Leather Tunic', 'Leather Cap', 'Leather Pants', 'Netherite Boots', 'Netherite Chestplate', 'Netherite Helmet', 'Netherite Leggings', 'Shears', 'Shield' } for _, item in ipairs( damagedItems ) do local name = 'Damaged ' .. item aliases[name] = { title = item, name = name } end -- Banners and colored items -- local patterns = { 'Base Dexter Canton', 'Base', 'Base Gradient', 'Base Indented', 'Base Sinister Canton', 'Bend', 'Bend Sinister', 'Bordure', 'Bordure Indented', 'Chevron', 'Chief Dexter Canton', 'Chief', 'Chief Indented', 'Chief Sinister Canton', 'Creeper Charge', 'Cross', 'Fess', 'Field Masoned', 'Flower Charge', 'Globe', 'Gradient', 'Inverted Chevron', 'Lozenge', 'Thing', 'Pale', 'Pale Dexter', 'Pale Sinister', 'Paly', 'Per Bend', 'Per Bend Inverted', 'Per Bend Sinister', 'Per Bend Sinister Inverted', 'Per Fess', 'Per Fess Inverted', 'Per Pale', 'Per Pale Inverted', 'Piglin', 'Snout', 'Roundel', 'Saltire', 'Skull Charge' } local colors = { 'White', 'Orange', 'Magenta', 'Light Blue', 'Yellow', 'Lime', 'Pink', 'Gray', 'Light Gray', 'Cyan', 'Purple', 'Blue', 'Brown', 'Green', 'Red', 'Black' } -- Firework Stars -- local fireworkStar = {} for _, color in ipairs( colors ) do local name = color .. ' Firework Star' aliases[name] = { title = 'Firework Star', name = name, text = '&7' .. color } table.insert( fireworkStar, aliases[name] ) for _, pattern in ipairs( patterns ) do name = color .. ' ' .. pattern .. ' Banner' aliases[name] = { title = 'Banner', name = name, text = '&7' .. color .. ' ' .. pattern } end end aliases['Any Firework Star'] = fireworkStar aliases['Matching Firework Star'] = fireworkStar -- Items that use the sixteen colors -- local coloredItems = { 'Balloon', 'Banner', 'Bed', 'Carpet', 'Concrete', 'Concrete Powder', 'Glazed Terracotta', 'Hardened $1 Stained Glass', 'Hardened $1 Stained Glass Pane', 'Shield', 'Shulker Box', 'Stained Glass', 'Stained Glass Pane', 'Wool' } for _, item in ipairs( coloredItems ) do local coloredItemAliases = {} local itemName = '' for _, color in ipairs( colors ) do if item:find( '%$1' ) then itemName = item:gsub( '%$1', color ) else itemName = color .. ' ' .. item end table.insert( coloredItemAliases, itemName ) end item = item:gsub( '%$1 ', '') aliases['Any ' .. item] = coloredItemAliases aliases['Matching ' .. item] = coloredItemAliases end -- list of all potions with no effects local noEffects = { 'Water Bottle', 'Awkward Potion', 'Thick Potion', 'Mundane Potion', 'Uncraftable Potion', 'Splash Water Bottle', 'Awkward Splash Potion', 'Thick Splash Potion', 'Mundane Splash Potion', 'Uncraftable Splash Potion', 'Lingering Water Bottle', 'Awkward Lingering Potion', 'Thick Lingering Potion', 'Mundane Lingering Potion', 'Uncraftable Lingering Potion', 'Tipped Arrow', 'Arrow of Splashing', 'Uncraftable Tipped Arrow', } for _, name in ipairs(noEffects) do aliases[name] = { name = name, text = '&7No effects' } end -- start these lists with the no effect items as names are not normal local potionItems = { ['Potion'] = { aliases['Water Bottle'], aliases['Awkward Potion'], aliases['Thick Potion'], aliases['Mundane Potion'], }, ['Splash Potion'] = { aliases['Splash Water Bottle'], aliases['Awkward Splash Potion'], aliases['Thick Splash Potion'], aliases['Mundane Splash Potion'], }, ['Lingering Potion'] = { aliases['Lingering Water Bottle'], aliases['Awkward Lingering Potion'], aliases['Thick Lingering Potion'], aliases['Mundane Lingering Potion'], }, ['Tipped Arrow'] = { aliases['Arrow of Splashing'], aliases['Tipped Arrow'], aliases['Tipped Arrow'], aliases['Tipped Arrow'], }, } -- Potions -- local effects = { -- durations are in the order normal, extended, enhanced {name = 'Regeneration', effect = '&9Regeneration', enhanced = 'II', durations = { normal = { '0:45', '1:30', '0:22' }, lingering = { '0:11', '0:22', '0:05' }, arrow = { '0:05', '0:11', '0:02' }}}, { name = 'Swiftness', effect = '&9Speed', enhanced = 'II', durations = { normal = { '3:00', '8:00', '1:30' }, lingering = { '0:45', '2:00', '0:22' }, arrow = { '0:22', '1:00', '0:11' }}}, { name = 'Fire Resistance', effect = '&9Fire Resistance', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Poison', effect = '&cPoison', enhanced = 'II', durations = { normal = { '0:45', '1:30', '0:21' }, lingering = { '0:11', '0:22', '0:05' }, arrow = { '0:05', '0:11', '0:02' }}}, { name = 'Healing', effect = '&9Instant Health', enhanced = 'II' }, { name = 'Night Vision', effect = '&9Night Vision', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Weakness', effect = '&cWeakness', durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}}, { name = 'Strength', effect = '&9Strength', enhanced = 'II', durations = { normal = { '3:00', '8:00', '1:30'}, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}}, { name = 'Slowness', effect = '&cSlowness', enhanced = 'IV', durations = { normal = { '1:30', '4:00', '0:20'}, lingering = {'0:22', '1:00', '0:05'}, arrow = { '0:11', '0:30', '0:02' }}}, { name = 'Leaping', effect = '&9Jump Boost', enhanced = 'II', durations = { normal = { '3:00', '8:00', '1:30' }, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}}, { name = 'Harming', effect = '&cInstant Damage', enhanced = 'II' }, { name = 'Water Breathing', effect = '&9Water Breathing', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Invisibility', effect = '&9Invisibility', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}}, { name = 'Slow Falling', effect = '&9Slow Falling', durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}}, { name = 'Luck', effect = '&9Luck', durations = { normal = { '5:00' }, lingering = { '1:15' }, arrow = { '0:37' }}}, { name = 'Decay', effect = '&cWither', durations = { normal = { '0:40' }, lingering = { '0:10' }, arrow = { '0:05' }}}, { name = 'the Turtle Master', text = '&cSlowness IV ($1)/&9Resistance III ($1)', enhanced = '&cSlowness VI ($1)/&9Resistance IV ($1)', durations = { normal = { '0:20', '0:40', '0:20' }, lingering = { '0:15', '0:45', '0:15' }, arrow = { '0:07', '0:22', '0:07' }}} } local types = { {name = 'Potion', durations = 'normal', text = 'Potion of '}, {name = 'Splash Potion', durations = 'normal', text = 'Splash Potion of '}, {name = 'Lingering Potion', durations = 'lingering', text = 'Lingering Potion of '}, {name = 'Tipped Arrow', durations = 'arrow', text = 'Arrow of '}, } for _, effect in ipairs(effects) do for _, type in ipairs(types) do -- form name, it will be reused local name = type.text .. effect.name local potionName = {} if type.name == 'Tipped Arrow' then potionName = type.text .. effect.name else potionName = type.text .. effect.name end -- if we have durations, add times if effect.durations then local durations = effect.durations[type.durations] -- turtle master is weird, so just do a fancy string replacement if effect.text then aliases[name] = { name = potionName, text = effect.text:gsub( '%$1', durations[1] ) } aliases[name .. ' Extended'] = { name = potionName, text = effect.text:gsub( '%$1', durations[2] ) } aliases[name .. ' Enhanced'] = { name = potionName, text = effect.enhanced:gsub( '%$1', durations[3] ) } else -- we always have normal aliases[name] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[1] ) } -- ensure we have extended if durations[2] then aliases[name .. ' Extended'] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[2] ) } -- and enhanced, currently there is nothing with a duration that can be extended but not enhanced if effect.enhanced then aliases[name .. ' Enhanced'] = { name = potionName, text = string.format( '%s %s (%s)', effect.effect, effect.enhanced, durations[3] ) } end end end else -- otherwise its just effect, currently every potion with no duration can be enhanced aliases[name] = { name = potionName, text = effect.effect} aliases[name .. ' Enhanced'] = { name = potionName, text = effect.effect .. ' ' .. effect.enhanced } end -- add the base potion to the any list table.insert(potionItems[type.name], aliases[name]) end end -- build the any lists for item, potionAliases in pairs( potionItems ) do aliases['Any ' .. item] = potionAliases aliases['Matching ' .. item] = potionAliases end -- Wood -- local woodTypes = { overworld = { 'Oak', 'Spruce', 'Birch', 'Jungle', 'Acacia', 'Dark Oak', 'Mangrove', 'Cherry', 'Bamboo', }, nether = { 'Crimson', 'Warped', }, both = {}, } local woodTypeWorld = {} for _, world in ipairs({'overworld', 'nether'}) do local woods = woodTypes[world] for _, type in ipairs(woods) do woodTypeWorld[type] = world table.insert(woodTypes.both, type) end end local woodItems = { overworld = { 'Wood', 'Log', 'Boat', 'Boat with Chest', 'Stripped $1 Log', 'Stripped $1 Wood', 'Wood Planks', 'Wood Slab', 'Wood Stairs', 'Wood Pressure Plate', 'Wood Button', 'Wood Door', 'Wood Trapdoor', 'Wood Fence Gate', 'Wood Fence', 'Wood Sign', 'Sapling', }, nether = { 'Stem', 'Hyphae', 'Stripped $1 Stem', 'Stripped $1 Hyphae', }, both = { '$world Planks', '${Wood,Hyphae}', '${Log,Stem}', 'Stripped $1 ${Wood,Hyphae}', 'Stripped $1 ${Log,Stem}', 'Fence Gate', -- '$world Wood Fence', '$wood Fence', '$wood Door', '$wood Button', '$wood Pressure Plate', '$world Hanging Sign', '$wood Trapdoor', '$world $wood Slab', '$wood Stairs', 'Sign' } } local woodItemWorld = {} for world, items in pairs(woodItems) do for _, item in ipairs(items) do -- expand $world (should only happen in "both") if (item:find('%$world')) and world == 'both' then item = item:gsub('%$world ', '') woodItemWorld['Overworld ' .. item] = 'overworld' woodItemWorld['Nether ' .. item] = 'nether' end woodItemWorld[item] = world end end local woodBadItems = { ['Bamboo Hanging Sign'] = 1, ['Bamboo Sapling'] = 1, ['Bamboo Wood'] = 1, ['Bamboo Log'] = 1, ['Stripped Bamboo Wood'] = 1, ['Stripped Bamboo Log'] = 1, } local woodNameMapping = { ['Mangrove Sapling'] = 'Mangrove Propagule', ['Bamboo Boat'] = 'Bamboo Raft', ['Bamboo Boat with Chest'] = 'Bamboo Raft with Chest', } for item, world in pairs(woodItemWorld) do local itemName = '' local woodAliases = {} -- real "linkable" name local realItem = item:gsub('^Overworld ', '') realItem = realItem:gsub('^Nether ', '') for _, wood in ipairs(woodTypes[world]) do -- Parse ${,} (world-select) syntax local selector = (woodTypeWorld[wood] == 'overworld') and "%1" or "%2" itemName = realItem:gsub("%${(.-),(.-)}", selector) if itemName:find('%$wood') then itemName = itemName:gsub('%$wood', wood) elseif itemName:find('%$1') then itemName = itemName:gsub( '%$1', wood) else itemName = wood .. ' ' .. itemName end -- special handling if woodNameMapping[itemName] then itemName = woodNameMapping[itemName] end if not woodBadItems[itemName] then table.insert(woodAliases, itemName) end end -- Parse ${,} (world-select) syntax item = item:gsub("%${(.-),(.-)}", "%1 or %2") item = item:gsub('%$wood ', 'wood ') item = item:gsub('%$1 ', '') aliases['Any ' .. item] = woodAliases aliases['Matching ' .. item] = woodAliases end -- Bedrock Edition Items -- local editionItems = { BE = { 'Acacia Fence Gate', 'Beacon', 'Birch Fence Gate', 'Black Stained Glass Pane', 'Blue Ice', 'Blue Stained Glass Pane', 'Bow', 'Brown Stained Glass Pane', 'Bucket of Pufferfish', 'Bucket of Tropical Fish', 'Chest', 'Conduit', 'Creeper Head', 'Crimson Fence Gate', 'Crying Obsidian', 'Cyan Stained Glass Pane', 'Dark Oak Fence Gate', 'Dragon Egg', 'Dragon Head', 'Enchanting Table', 'End Gateway', 'End Portal Frame', 'End Portal', 'End Rod', 'Ender Chest', 'Flowing Lava', 'Glass Pane', 'Glowstone', 'Gray Stained Glass Pane', 'Green Stained Glass Pane', 'Head', 'Honey Block', 'Horn Coral Block', 'Iron Bars', 'Jack o\'Lantern', 'Jigsaw Block', 'Jungle Fence Gate', 'Jungle Leaves', 'Lava', 'Leather Horse Armor', 'Light Blue Stained Glass Pane', 'Light Gray Stained Glass Pane', 'Lime Stained Glass Pane', 'Magenta Stained Glass Pane', 'Magma Block', 'Map', 'Minecart with Command Block', 'Monster Spawner', 'Oak Fence Gate', 'Observer', 'Ocean Explorer Map', 'Orange Stained Glass Pane', 'Peony', 'Pink Stained Glass Pane', 'Purple Stained Glass Pane', 'Red Stained Glass Pane', 'Rose Bush', 'Scaffolding', 'Sea Lantern', 'Shroomlight', 'Skeleton Skull', 'Spawn Cat', 'Spawn Panda', 'Spawn Wandering Trader', 'Spawner', 'Spruce Fence Gate', 'Stonecutter', 'Structure Void', 'Trapped Chest', 'Warped Fence Gate', 'White Stained Glass Pane', 'Wither Skeleton Skull', 'Woodland Explorer Map', 'Yellow Stained Glass Pane', 'Zombie Head', }, LCE = { 'Peony', 'Rose Bush', 'Shrub' } } for edition, items in pairs(editionItems) do for _, item in ipairs(items) do local name = item .. ' ' .. edition aliases[name] = { title = item, name = name } end end -- Light blocks for level = 0, 15 do aliases["Light Block " .. level] = {title = "Light Block", name = "Light Block " .. level} aliases["Light " .. level] = {title = "&dLight", name = "Light " .. level} end aliases["Light Negative"] = {title = "&dLight", name = "Light Negative"} -- Smithing Template local smithing_templates = { { 'Netherite Upgrade', 'Diamond Equipment', 'Netherite Ingot' }, { 'Coast Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Dune Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Eye Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Host Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Raiser Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Rib Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Sentry Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Shaper Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Silence Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Snout Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Spire Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Tide Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Vex Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Ward Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Wayfinder Armor Trim', 'Armor', 'Ingot & Crystals' }, { 'Wild Armor Trim', 'Armor', 'Ingot & Crystals' }, } local smithing_template_array = {} local armor_trims_array = {} for _,smithing_template in pairs(smithing_templates) do local current_alias = { title = 'Smithing Template', name = smithing_template[1] .. ' Smithing Template', text = '&7' .. smithing_template[1] .. '//Applies to:/&#160;&9' .. smithing_template[2] .. '/&7Ingredients:/&#160;&9' .. smithing_template[3], } aliases[smithing_template[1]] = current_alias aliases[smithing_template[1] .. ' Smithing Template'] = current_alias table.insert(smithing_template_array,current_alias) if string.find(smithing_template[1],' Armor Trim$') then table.insert(armor_trims_array,current_alias) end end aliases['Matching Smithing Template'] = smithing_template_array aliases['Any Smithing Template'] = smithing_template_array aliases['Matching Armor Trim'] = armor_trims_array aliases['Any Armor Trim'] = armor_trims_array aliases['Matching Armor Trim Smithing Template'] = armor_trims_array aliases['Any Armor Trim Smithing Template'] = armor_trims_array return aliases 1a6002cece1708b8394290658b3cd5f4a57cda0a Module:Random 828 13 24 2023-10-30T11:21:50Z crafting>~aanzx 0 cleanup Scribunto text/plain local p = {} local seeded local randomseed = math.randomseed local random = math.random function p.random( m, n ) if not seeded then p.seed() end return random( n and m or m and 1 or 0, n or m or 1 ) end function p.seed( seed ) randomseed( seed or ( os.time() + os.clock() * 1000000000 ) ) -- First few values of seed is not guaranteed to be random on some platforms random() random() seeded = true end return p 9b7fa144f6e50a8f87ea22766f60b3785413e3b9 Module:UI 828 14 26 2023-10-30T11:21:50Z crafting>~aanzx 0 cleanup Scribunto text/plain local slot = require( [[Module:Inventory slot]] ).slot local addSlot = function( args, item, prefix, class, default ) local none, nostacksize prefix = prefix or '' if #prefix == 0 then none = 'none' nostacksize = ((item == '' or nil) and '') or (args and args[item] and args[item]:gsub( '[,%d]', '' ) or '') end return slot{ nostacksize or args[item], mod = args.Mod, link = none or args[prefix .. 'link'], title = none or args[prefix .. 'title'], class = class, default = default, parsed = args.parsed } end function experience_image(exp_value) local MINMAX = { {-32768, 2}, {3, 6}, {7, 16}, {17, 36}, {37, 72}, {73, 148}, {149, 306}, {307, 616}, {617, 1236}, {1237, 2476}, {2477, 32767} } local EXP_IMGS = { "Experience Orb Value -32768-2.png", "Experience Orb Value 3-6.png", "Experience Orb Value 7-16.png", "Experience Orb Value 17-36.png", "Experience Orb Value 37-72.png", "Experience Orb Value 73-148.png", "Experience Orb Value 149-306.png", "Experience Orb Value 307-616.png", "Experience Orb Value 617-1236.png", "Experience Orb Value 1237-2476.png", "Experience Orb Value 2477-32767.png", } local n = assert( tonumber(exp_value), "Module:UI: Experience value is not a number (" .. exp_value .. ")" ) local idx = 2; exp = tonumber( exp_value ) if exp <= MINMAX[#MINMAX][2] then for i = 1, #MINMAX do if MINMAX[i][1] < exp and MINMAX[i][2] >= exp then idx = i break end end end return tostring( EXP_IMGS[idx] ) end local p = {} -- Crafting table function p.craftingTable( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Crafting_Table pixel-image' ) local input = body:tag( 'span' ):addClass( 'mcui-input' ) for num = 1, 3 do local row = input:tag( 'span' ):addClass( 'mcui-row' ) for _, letter in ipairs{ 'A', 'B', 'C' } do row:wikitext( addSlot( args, letter .. num, 'I' ) ) end end local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' ):done() if args.arrow or '' ~= '' then arrow:css( 'background-image', '{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}' ) end body :tag( 'span' ) :addClass( 'mcui-output' ) :wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) ) local shapeless = args.shapeless or '' local fixed = args.fixed or '' if shapeless ~= '' or fixed ~= '' then local icon = body:tag( 'span' ) :addClass( 'mcui-icons' ) :tag( 'span' ) :tag( 'br' ) :done() if shapeless ~= '' then icon:addClass( 'mcui-shapeless' ) :attr( 'title', 'This recipe is shapeless, the inputs may be placed in any arrangement in the crafting grid.' ) elseif fixed ~= '' then local notFixed = args.notfixed or '' local exceptFixed = '' if notFixed ~= '' then exceptFixed = '; except for ' .. notFixed .. ', which can go anywhere' end icon:addClass( 'mcui-fixed' ) :attr( 'title', 'This recipe is fixed, the input arrangement may not be moved or mirrored in the crafting grid' .. exceptFixed .. '.' ) end end return tostring( mw.html.create( 'div' ):node( body ) ) end -- Furnace function p.furnace( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Furnace pixel-image' ) local input = body:tag( 'span' ):addClass( 'mcui-input' ) input:wikitext( addSlot( args, 'Input', 'I' ) ) local fuel = input:tag( 'span' ):addClass( 'mcui-fuel' ):tag( 'br' ):done() local fuelImg = args.FuelUsage or '' local burning = args.Input or '' ~= '' and args.Fuel or '' ~= '' if not burning then fuel:addClass( 'mcui-inactive' ) if fuelImg ~= '' then fuelImg = fuelImg .. ' (in-active)' end end if fuelImg ~= '' then fuel:css( 'background-image', '{{FileUrl|' .. fuelImg .. ' (' .. args.Mod .. ').png}}' ) end input:wikitext( addSlot( args, 'Fuel', 'F' ) ) local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' ):done() local arrowImg = args.Progress or '' if not burning or ( args.Output or '' ) == '' then arrow:addClass( 'mcui-inactive' ) if arrowImg ~= '' then arrowImg = arrowImg .. ' (in-active)' end end if arrowImg ~= '' then arrow:css( 'background-image', '{{FileUrl|' .. arrowImg .. ' Progress (' .. args.Mod .. ').png}}' ) end body :tag( 'span' ) :addClass( 'mcui-output' ) :wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) ) args.Experience = args.Experience or '' if args.Experience ~= '' then -- Converts commas to dots, removes all spaces and splits the arguments with semicolon. local split = mw.text.split(string.gsub(args.Experience, '[ ,]', {[' '] = '', [','] = '.'}), ';', true) local animated = body:tag('span'):attr('title', 'If there is a fractional part, it means the recipe has a chance equal to the fractional part of rewarding an additional XP point.') :addClass('animated'):cssText('position:absolute;top:92px;left:108px;text-align:center;width:70px;') local isNotFirst = true for i, v in ipairs(split) do assert(tonumber(v), 'Module:UI: "' .. v .. '" is not a valid number') local xp = tonumber(v) animated:tag('span') :addClass(isNotFirst and 'animated-active' or nil) :wikitext('<span style="display:inline-block;margin-top:3px;width:16px;height:16px;vertical-align:top;background-size:16px 16px;background-image:{{FileUrl|' .. experience_image(xp) .. '}}"></span>' .. '<span style="display:inline-block;vertical-align:top;font-family:Minecraft;font-size:16px;color:#404040">' .. ('&nbsp;' and xp > 72 or '') .. xp .. '</span>') isNotFirst = false end end return tostring( mw.html.create( 'div' ):node( body ) ) end -- Brewing Stand function p.brewingStand( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Brewing_Stand pixel-image' ) local input = body:tag( 'span' ):addClass( 'mcui-input' ) input:tag( 'span' ):addClass( 'mcui-bubbling' ):tag( 'br' ) input:wikitext( addSlot( args, 'Input', 'I' ) ) input:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' ) if ( args.Input or '' ) == '' or ( ( args.Output1 or '' ) == '' and ( args.Output2 or '' ) == '' and ( args.Output3 or '' ) == '' ) then input:addClass( 'mcui-inactive' ) end body:tag( 'span' ):addClass( 'mcui-paths' ):tag( 'br' ) local output = body:tag( 'span' ):addClass( 'mcui-output' ) for i = 1, 3 do output:wikitext( addSlot( args, 'Output' .. i, 'O' .. i, 'mcui-output' .. i ) ) end return tostring( mw.html.create( 'div' ):node( body ) ) end -- Stonecutter function p.stonecutter( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Stonecutter pixel-image' ) local input = body:tag( 'span' ):addClass( 'mcui-input' ) input:wikitext( addSlot( args, 'Input', 'I' ) ) local arrow = body:tag( 'span' ):addClass( 'mcui-stonecutterArrow' ) if (args.arrow or '') ~= '' then arrow:css( 'background-image', '{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}' ) end arrow:wikitext( addSlot( args, 'Output', '', 'invslot-plain mcui-stonecutterSprite' ) ) body :tag( 'span' ) :addClass( 'mcui-output' ) :wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) ) return tostring( mw.html.create( 'div' ):node( body ) ) end -- Loom function p.loom( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Loom pixel-image' ) local tapestry = body:tag( 'span' ):addClass( 'mcui-tapestry' ) if args.Banner and #args.Banner>0 then tapestry:wikitext( addSlot( args, 'Banner', 'B', 'mcui-inputBanner' ) ) end if args.Dye and #args.Dye>0 then tapestry:wikitext( addSlot( args, 'Dye', 'D', 'mcui-inputDye' ) ) end if args.Pattern and #args.Pattern>0 then tapestry:wikitext( addSlot( args, 'Pattern', 'P', 'mcui-inputPattern' ) ) end tapestry:tag( 'span' ):tag( 'br' ):done() local arrow = body:tag( 'span' ):addClass( 'mcui-loomArrow' ) if args.arrow or '' ~= '' then arrow:css( 'background-image', '{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}' ) end local sprite = args.Sprite local bannerSprite if sprite and #sprite>0 then local animate = require( [[Module:AnimateSprite]] ).animate bannerSprite = animate{ args.Sprite, sheet = 'SlotSprite' } else bannerSprite = '<br>' end arrow :tag( 'span' ) :addClass( 'mcui-bannerSprite' ) :wikitext( bannerSprite ) body :tag( 'span' ) :addClass( 'mcui-output' ) :wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) ) return tostring( mw.html.create( 'div' ):node( body ) ) end -- Grindstone function p.grindstone( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Grindstone pixel-image' ) local grindstone = body:tag( 'span' ):addClass( 'mcui-grindstone' ) grindstone:wikitext( addSlot( args, 'Input1', 'I1', 'mcui-input1' ) ) grindstone:wikitext( addSlot( args, 'Input2', 'I2', 'mcui-input2' ) ) local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' ) if args.arrow or '' ~= '' then arrow:css( 'background-image', '{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}' ) end body :tag( 'span' ) :addClass( 'mcui-output' ) :wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) ) return tostring( mw.html.create( 'div' ):node( body ) ) end -- Smithing Table function p.smithing (f) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end return tostring( mw.html.create( 'div' ):node( body ) ) end return p 97a9c6a0c750f51165133aca6edc1af4228188c5 Template:Languages 10 45 76 2023-11-13T20:12:51Z Translation-category>Tacsipacsi 0 alphabetic order wikitext text/x-wiki <includeonly>{{Nmbox|header={{int:tpt-languages-legend}} |text='''[[{{{1|{{NAMESPACE}}:{{BASEPAGENAME}}}}}|English]]'''<!-- For the tested order below, see https://commons.wikimedia.org/wiki/Module_talk:Multilingual_description/sort/testcases -->{{Languages/Lang|sma|{{{1|}}}| }}{{Languages/Lang|ace|{{{1|}}}| }}{{Languages/Lang|ang|{{{1|}}}| }}{{Languages/Lang|af|{{{1|}}}| }}{{Languages/Lang|ak|{{{1|}}}| }}{{Languages/Lang|gsw|{{{1|}}}| }}{{Languages/Lang|als|{{{1|}}}| }}{{Languages/Lang|ase|{{{1|}}}| }}{{Languages/Lang|smn|{{{1|}}}| }}{{Languages/Lang|an|{{{1|}}}| }}{{Languages/Lang|rup|{{{1|}}}| }}{{Languages/Lang|roa-rup|{{{1|}}}| }}{{Languages/Lang|frp|{{{1|}}}| }}{{Languages/Lang|ast|{{{1|}}}| }}{{Languages/Lang|atj|{{{1|}}}| }}{{Languages/Lang|gn|{{{1|}}}| }}{{Languages/Lang|ay|{{{1|}}}| }}{{Languages/Lang|az|{{{1|}}}| }}{{Languages/Lang|abs|{{{1|}}}| }}{{Languages/Lang|gor|{{{1|}}}| }}{{Languages/Lang|id|{{{1|}}}| }}{{Languages/Lang|ms|{{{1|}}}| }}{{Languages/Lang|ban|{{{1|}}}| }}{{Languages/Lang|bm|{{{1|}}}| }}{{Languages/Lang|nan|{{{1|}}}| }}{{Languages/Lang|map-bms|{{{1|}}}| }}{{Languages/Lang|zh-min-nan|{{{1|}}}| }}{{Languages/Lang|bjn|{{{1|}}}| }}{{Languages/Lang|btm|{{{1|}}}| }}{{Languages/Lang|bbc|{{{1|}}}| }}{{Languages/Lang|bbc-latn|{{{1|}}}| }}{{Languages/Lang|sje|{{{1|}}}| }}{{Languages/Lang|bcl|{{{1|}}}| }}{{Languages/Lang|bi|{{{1|}}}| }}{{Languages/Lang|bar|{{{1|}}}| }}{{Languages/Lang|bs|{{{1|}}}| }}{{Languages/Lang|brh|{{{1|}}}| }}{{Languages/Lang|br|{{{1|}}}| }}{{Languages/Lang|en-ca|{{{1|}}}| }}{{Languages/Lang|en-gb|{{{1|}}}| }}{{Languages/Lang|cps|{{{1|}}}| }}{{Languages/Lang|ca|{{{1|}}}| }}{{Languages/Lang|ceb|{{{1|}}}| }}{{Languages/Lang|cs|{{{1|}}}| }}{{Languages/Lang|ch|{{{1|}}}| }}{{Languages/Lang|cbk-zam|{{{1|}}}| }}{{Languages/Lang|ny|{{{1|}}}| }}{{Languages/Lang|sn|{{{1|}}}| }}{{Languages/Lang|tum|{{{1|}}}| }}{{Languages/Lang|cho|{{{1|}}}| }}{{Languages/Lang|sei|{{{1|}}}| }}{{Languages/Lang|co|{{{1|}}}| }}{{Languages/Lang|cy|{{{1|}}}| }}{{Languages/Lang|da|{{{1|}}}| }}{{Languages/Lang|se|{{{1|}}}| }}{{Languages/Lang|pdc|{{{1|}}}| }}{{Languages/Lang|de|{{{1|}}}| }}{{Languages/Lang|de-formal|{{{1|}}}| }}{{Languages/Lang|nv|{{{1|}}}| }}{{Languages/Lang|dsb|{{{1|}}}| }}{{Languages/Lang|na|{{{1|}}}| }}{{Languages/Lang|dtp|{{{1|}}}| }}{{Languages/Lang|mh|{{{1|}}}| }}{{Languages/Lang|et|{{{1|}}}| }}{{Languages/Lang|egl|{{{1|}}}| }}{{Languages/Lang|eml|{{{1|}}}| }}{{Languages/Lang|en|{{{1|}}}| }}{{Languages/Lang|es|{{{1|}}}| }}{{Languages/Lang|es-formal|{{{1|}}}| }}{{Languages/Lang|es-419|{{{1|}}}| }}{{Languages/Lang|eo|{{{1|}}}| }}{{Languages/Lang|ext|{{{1|}}}| }}{{Languages/Lang|eu|{{{1|}}}| }}{{Languages/Lang|ee|{{{1|}}}| }}{{Languages/Lang|hif|{{{1|}}}| }}{{Languages/Lang|hif-latn|{{{1|}}}| }}{{Languages/Lang|fo|{{{1|}}}| }}{{Languages/Lang|fr|{{{1|}}}| }}{{Languages/Lang|frc|{{{1|}}}| }}{{Languages/Lang|fy|{{{1|}}}| }}{{Languages/Lang|ff|{{{1|}}}| }}{{Languages/Lang|fur|{{{1|}}}| }}{{Languages/Lang|gv|{{{1|}}}| }}{{Languages/Lang|ga|{{{1|}}}| }}{{Languages/Lang|sm|{{{1|}}}| }}{{Languages/Lang|gag|{{{1|}}}| }}{{Languages/Lang|gd|{{{1|}}}| }}{{Languages/Lang|gl|{{{1|}}}| }}{{Languages/Lang|aln|{{{1|}}}| }}{{Languages/Lang|ki|{{{1|}}}| }}{{Languages/Lang|gom-latn|{{{1|}}}| }}{{Languages/Lang|ha|{{{1|}}}| }}{{Languages/Lang|haw|{{{1|}}}| }}{{Languages/Lang|ho|{{{1|}}}| }}{{Languages/Lang|hsb|{{{1|}}}| }}{{Languages/Lang|hr|{{{1|}}}| }}{{Languages/Lang|hrx|{{{1|}}}| }}{{Languages/Lang|io|{{{1|}}}| }}{{Languages/Lang|ig|{{{1|}}}| }}{{Languages/Lang|ilo|{{{1|}}}| }}{{Languages/Lang|hil|{{{1|}}}| }}{{Languages/Lang|ia|{{{1|}}}| }}{{Languages/Lang|ie|{{{1|}}}| }}{{Languages/Lang|ike-latn|{{{1|}}}| }}{{Languages/Lang|ik|{{{1|}}}| }}{{Languages/Lang|bto|{{{1|}}}| }}{{Languages/Lang|zu|{{{1|}}}| }}{{Languages/Lang|xh|{{{1|}}}| }}{{Languages/Lang|is|{{{1|}}}| }}{{Languages/Lang|it|{{{1|}}}| }}{{Languages/Lang|jv|{{{1|}}}| }}{{Languages/Lang|rmf|{{{1|}}}| }}{{Languages/Lang|smj|{{{1|}}}| }}{{Languages/Lang|jut|{{{1|}}}| }}{{Languages/Lang|kbp|{{{1|}}}| }}{{Languages/Lang|kea|{{{1|}}}| }}{{Languages/Lang|kl|{{{1|}}}| }}{{Languages/Lang|pam|{{{1|}}}| }}{{Languages/Lang|kr|{{{1|}}}| }}{{Languages/Lang|krl|{{{1|}}}| }}{{Languages/Lang|csb|{{{1|}}}| }}{{Languages/Lang|kw|{{{1|}}}| }}{{Languages/Lang|rw|{{{1|}}}| }}{{Languages/Lang|krj|{{{1|}}}| }}{{Languages/Lang|rn|{{{1|}}}| }}{{Languages/Lang|sw|{{{1|}}}| }}{{Languages/Lang|kiu|{{{1|}}}| }}{{Languages/Lang|kg|{{{1|}}}| }}{{Languages/Lang|avk|{{{1|}}}| }}{{Languages/Lang|ses|{{{1|}}}| }}{{Languages/Lang|ht|{{{1|}}}| }}{{Languages/Lang|kri|{{{1|}}}| }}{{Languages/Lang|gcr|{{{1|}}}| }}{{Languages/Lang|ku|{{{1|}}}| }}{{Languages/Lang|ku-latn|{{{1|}}}| }}{{Languages/Lang|fkv|{{{1|}}}| }}{{Languages/Lang|kj|{{{1|}}}| }}{{Languages/Lang|lad|{{{1|}}}| }}{{Languages/Lang|jbo|{{{1|}}}| }}{{Languages/Lang|lld|{{{1|}}}| }}{{Languages/Lang|ltg|{{{1|}}}| }}{{Languages/Lang|la|{{{1|}}}| }}{{Languages/Lang|lv|{{{1|}}}| }}{{Languages/Lang|lzz|{{{1|}}}| }}{{Languages/Lang|to|{{{1|}}}| }}{{Languages/Lang|lb|{{{1|}}}| }}{{Languages/Lang|nia|{{{1|}}}| }}{{Languages/Lang|lt|{{{1|}}}| }}{{Languages/Lang|lij|{{{1|}}}| }}{{Languages/Lang|li|{{{1|}}}| }}{{Languages/Lang|ln|{{{1|}}}| }}{{Languages/Lang|lfn|{{{1|}}}| }}{{Languages/Lang|liv|{{{1|}}}| }}{{Languages/Lang|olo|{{{1|}}}| }}{{Languages/Lang|lg|{{{1|}}}| }}{{Languages/Lang|lmo|{{{1|}}}| }}{{Languages/Lang|mad|{{{1|}}}| }}{{Languages/Lang|hu|{{{1|}}}| }}{{Languages/Lang|hu-formal|{{{1|}}}| }}{{Languages/Lang|vmf|{{{1|}}}| }}{{Languages/Lang|mg|{{{1|}}}| }}{{Languages/Lang|mt|{{{1|}}}| }}{{Languages/Lang|mi|{{{1|}}}| }}{{Languages/Lang|mrh|{{{1|}}}| }}{{Languages/Lang|srq|{{{1|}}}| }}{{Languages/Lang|arn|{{{1|}}}| }}{{Languages/Lang|fit|{{{1|}}}| }}{{Languages/Lang|min|{{{1|}}}| }}{{Languages/Lang|cdo|{{{1|}}}| }}{{Languages/Lang|mwl|{{{1|}}}| }}{{Languages/Lang|lus|{{{1|}}}| }}{{Languages/Lang|mus|{{{1|}}}| }}{{Languages/Lang|fj|{{{1|}}}| }}{{Languages/Lang|nah|{{{1|}}}| }}{{Languages/Lang|nap|{{{1|}}}| }}{{Languages/Lang|nl|{{{1|}}}| }}{{Languages/Lang|nl-informal|{{{1|}}}| }}{{Languages/Lang|nds-nl|{{{1|}}}| }}{{Languages/Lang|cr|{{{1|}}}| }}{{Languages/Lang|niu|{{{1|}}}| }}{{Languages/Lang|frr|{{{1|}}}| }}{{Languages/Lang|nb|{{{1|}}}| }}{{Languages/Lang|pih|{{{1|}}}| }}{{Languages/Lang|nn|{{{1|}}}| }}{{Languages/Lang|nrm|{{{1|}}}| }}{{Languages/Lang|nov|{{{1|}}}| }}{{Languages/Lang|nys|{{{1|}}}| }}{{Languages/Lang|uz-latn|{{{1|}}}| }}{{Languages/Lang|uz|{{{1|}}}| }}{{Languages/Lang|oc|{{{1|}}}| }}{{Languages/Lang|om|{{{1|}}}| }}{{Languages/Lang|ng|{{{1|}}}| }}{{Languages/Lang|de-at|{{{1|}}}| }}{{Languages/Lang|hz|{{{1|}}}| }}{{Languages/Lang|pfl|{{{1|}}}| }}{{Languages/Lang|pag|{{{1|}}}| }}{{Languages/Lang|ami|{{{1|}}}| }}{{Languages/Lang|pap|{{{1|}}}| }}{{Languages/Lang|pcd|{{{1|}}}| }}{{Languages/Lang|jam|{{{1|}}}| }}{{Languages/Lang|pms|{{{1|}}}| }}{{Languages/Lang|nds|{{{1|}}}| }}{{Languages/Lang|pdt|{{{1|}}}| }}{{Languages/Lang|pl|{{{1|}}}| }}{{Languages/Lang|pt|{{{1|}}}| }}{{Languages/Lang|pt-br|{{{1|}}}| }}{{Languages/Lang|prg|{{{1|}}}| }}{{Languages/Lang|aa|{{{1|}}}| }}{{Languages/Lang|kaa|{{{1|}}}| }}{{Languages/Lang|kk-latn|{{{1|}}}| }}{{Languages/Lang|kk-tr|{{{1|}}}| }}{{Languages/Lang|crh|{{{1|}}}| }}{{Languages/Lang|crh-latn|{{{1|}}}| }}{{Languages/Lang|ty|{{{1|}}}| }}{{Languages/Lang|ksh|{{{1|}}}| }}{{Languages/Lang|rgn|{{{1|}}}| }}{{Languages/Lang|ro|{{{1|}}}| }}{{Languages/Lang|rmy|{{{1|}}}| }}{{Languages/Lang|rm|{{{1|}}}| }}{{Languages/Lang|qug|{{{1|}}}| }}{{Languages/Lang|qu|{{{1|}}}| }}{{Languages/Lang|sms|{{{1|}}}| }}{{Languages/Lang|xsy|{{{1|}}}| }}{{Languages/Lang|szy|{{{1|}}}| }}{{Languages/Lang|sg|{{{1|}}}| }}{{Languages/Lang|sc|{{{1|}}}| }}{{Languages/Lang|sdc|{{{1|}}}| }}{{Languages/Lang|sli|{{{1|}}}| }}{{Languages/Lang|de-ch|{{{1|}}}| }}{{Languages/Lang|sco|{{{1|}}}| }}{{Languages/Lang|trv|{{{1|}}}| }}{{Languages/Lang|stq|{{{1|}}}| }}{{Languages/Lang|st|{{{1|}}}| }}{{Languages/Lang|nso|{{{1|}}}| }}{{Languages/Lang|tn|{{{1|}}}| }}{{Languages/Lang|sq|{{{1|}}}| }}{{Languages/Lang|scn|{{{1|}}}| }}{{Languages/Lang|simple|{{{1|}}}| }}{{Languages/Lang|loz|{{{1|}}}| }}{{Languages/Lang|ss|{{{1|}}}| }}{{Languages/Lang|sk|{{{1|}}}| }}{{Languages/Lang|sl|{{{1|}}}| }}{{Languages/Lang|srn|{{{1|}}}| }}{{Languages/Lang|szl|{{{1|}}}| }}{{Languages/Lang|so|{{{1|}}}| }}{{Languages/Lang|sr-el|{{{1|}}}| }}{{Languages/Lang|sh|{{{1|}}}| }}{{Languages/Lang|su|{{{1|}}}| }}{{Languages/Lang|sv|{{{1|}}}| }}{{Languages/Lang|fi|{{{1|}}}| }}{{Languages/Lang|shy-latn|{{{1|}}}| }}{{Languages/Lang|tl|{{{1|}}}| }}{{Languages/Lang|kab|{{{1|}}}| }}{{Languages/Lang|roa-tara|{{{1|}}}| }}{{Languages/Lang|rif|{{{1|}}}| }}{{Languages/Lang|shi-latn|{{{1|}}}| }}{{Languages/Lang|shi|{{{1|}}}| }}{{Languages/Lang|tt-latn|{{{1|}}}| }}{{Languages/Lang|tay|{{{1|}}}| }}{{Languages/Lang|tet|{{{1|}}}| }}{{Languages/Lang|din|{{{1|}}}| }}{{Languages/Lang|vi|{{{1|}}}| }}{{Languages/Lang|tpi|{{{1|}}}| }}{{Languages/Lang|tg-latn|{{{1|}}}| }}{{Languages/Lang|tly|{{{1|}}}| }}{{Languages/Lang|chy|{{{1|}}}| }}{{Languages/Lang|ve|{{{1|}}}| }}{{Languages/Lang|aeb-latn|{{{1|}}}| }}{{Languages/Lang|tr|{{{1|}}}| }}{{Languages/Lang|tk|{{{1|}}}| }}{{Languages/Lang|tru|{{{1|}}}| }}{{Languages/Lang|tw|{{{1|}}}| }}{{Languages/Lang|sju|{{{1|}}}| }}{{Languages/Lang|ug-latn|{{{1|}}}| }}{{Languages/Lang|vot|{{{1|}}}| }}{{Languages/Lang|za|{{{1|}}}| }}{{Languages/Lang|vec|{{{1|}}}| }}{{Languages/Lang|vep|{{{1|}}}| }}{{Languages/Lang|ruq|{{{1|}}}| }}{{Languages/Lang|ruq-latn|{{{1|}}}| }}{{Languages/Lang|vo|{{{1|}}}| }}{{Languages/Lang|vro|{{{1|}}}| }}{{Languages/Lang|fiu-vro|{{{1|}}}| }}{{Languages/Lang|wa|{{{1|}}}| }}{{Languages/Lang|vls|{{{1|}}}| }}{{Languages/Lang|war|{{{1|}}}| }}{{Languages/Lang|wo|{{{1|}}}| }}{{Languages/Lang|ts|{{{1|}}}| }}{{Languages/Lang|yo|{{{1|}}}| }}{{Languages/Lang|diq|{{{1|}}}| }}{{Languages/Lang|sgs|{{{1|}}}| }}{{Languages/Lang|zea|{{{1|}}}| }}{{Languages/Lang|bat-smg|{{{1|}}}| }}{{Languages/Lang|grc|{{{1|}}}| }}{{Languages/Lang|el|{{{1|}}}| }}{{Languages/Lang|pnt|{{{1|}}}| }}{{Languages/Lang|av|{{{1|}}}| }}{{Languages/Lang|ady|{{{1|}}}| }}{{Languages/Lang|ady-cyrl|{{{1|}}}| }}{{Languages/Lang|kbd-cyrl|{{{1|}}}| }}{{Languages/Lang|kbd|{{{1|}}}| }}{{Languages/Lang|ab|{{{1|}}}| }}{{Languages/Lang|ba|{{{1|}}}| }}{{Languages/Lang|be|{{{1|}}}| }}{{Languages/Lang|be-tarask|{{{1|}}}| }}{{Languages/Lang|be-x-old|{{{1|}}}| }}{{Languages/Lang|bxr|{{{1|}}}| }}{{Languages/Lang|bg|{{{1|}}}| }}{{Languages/Lang|ruq-cyrl|{{{1|}}}| }}{{Languages/Lang|inh|{{{1|}}}| }}{{Languages/Lang|os|{{{1|}}}| }}{{Languages/Lang|sjd|{{{1|}}}| }}{{Languages/Lang|kv|{{{1|}}}| }}{{Languages/Lang|crh-cyrl|{{{1|}}}| }}{{Languages/Lang|krc|{{{1|}}}| }}{{Languages/Lang|kum|{{{1|}}}| }}{{Languages/Lang|ky|{{{1|}}}| }}{{Languages/Lang|mrj|{{{1|}}}| }}{{Languages/Lang|kk|{{{1|}}}| }}{{Languages/Lang|kk-cyrl|{{{1|}}}| }}{{Languages/Lang|kk-kz|{{{1|}}}| }}{{Languages/Lang|lbe|{{{1|}}}| }}{{Languages/Lang|lez|{{{1|}}}| }}{{Languages/Lang|mk|{{{1|}}}| }}{{Languages/Lang|mdf|{{{1|}}}| }}{{Languages/Lang|mo|{{{1|}}}| }}{{Languages/Lang|mn|{{{1|}}}| }}{{Languages/Lang|mhr|{{{1|}}}| }}{{Languages/Lang|ce|{{{1|}}}| }}{{Languages/Lang|koi|{{{1|}}}| }}{{Languages/Lang|rue|{{{1|}}}| }}{{Languages/Lang|ru|{{{1|}}}| }}{{Languages/Lang|sah|{{{1|}}}| }}{{Languages/Lang|sty|{{{1|}}}| }}{{Languages/Lang|cu|{{{1|}}}| }}{{Languages/Lang|sr-ec|{{{1|}}}| }}{{Languages/Lang|sr|{{{1|}}}| }}{{Languages/Lang|tt-cyrl|{{{1|}}}| }}{{Languages/Lang|tt|{{{1|}}}| }}{{Languages/Lang|tly|{{{1|}}}| }}{{Languages/Lang|tg-cyrl|{{{1|}}}| }}{{Languages/Lang|tg|{{{1|}}}| }}{{Languages/Lang|alt|{{{1|}}}| }}{{Languages/Lang|tyv|{{{1|}}}| }}{{Languages/Lang|udm|{{{1|}}}| }}{{Languages/Lang|uz-cyrl|{{{1|}}}| }}{{Languages/Lang|uk|{{{1|}}}| }}{{Languages/Lang|xal|{{{1|}}}| }}{{Languages/Lang|cv|{{{1|}}}| }}{{Languages/Lang|myv|{{{1|}}}| }}{{Languages/Lang|xmf|{{{1|}}}| }}{{Languages/Lang|ka|{{{1|}}}| }}{{Languages/Lang|hyw|{{{1|}}}| }}{{Languages/Lang|hy|{{{1|}}}| }}{{Languages/Lang|anp|{{{1|}}}| }}{{Languages/Lang|awa|{{{1|}}}| }}{{Languages/Lang|ks-deva|{{{1|}}}| }}{{Languages/Lang|ks|{{{1|}}}| }}{{Languages/Lang|gom-deva|{{{1|}}}| }}{{Languages/Lang|gom|{{{1|}}}| }}{{Languages/Lang|dty|{{{1|}}}| }}{{Languages/Lang|new|{{{1|}}}| }}{{Languages/Lang|ne|{{{1|}}}| }}{{Languages/Lang|pi|{{{1|}}}| }}{{Languages/Lang|bho|{{{1|}}}| }}{{Languages/Lang|bh|{{{1|}}}| }}{{Languages/Lang|mr|{{{1|}}}| }}{{Languages/Lang|rwr|{{{1|}}}| }}{{Languages/Lang|mai|{{{1|}}}| }}{{Languages/Lang|sa|{{{1|}}}| }}{{Languages/Lang|hi|{{{1|}}}| }}{{Languages/Lang|as|{{{1|}}}| }}{{Languages/Lang|bn|{{{1|}}}| }}{{Languages/Lang|bpy|{{{1|}}}| }}{{Languages/Lang|pa|{{{1|}}}| }}{{Languages/Lang|or|{{{1|}}}| }}{{Languages/Lang|gu|{{{1|}}}| }}{{Languages/Lang|ta|{{{1|}}}| }}{{Languages/Lang|te|{{{1|}}}| }}{{Languages/Lang|kn|{{{1|}}}| }}{{Languages/Lang|tcy|{{{1|}}}| }}{{Languages/Lang|ml|{{{1|}}}| }}{{Languages/Lang|si|{{{1|}}}| }}{{Languages/Lang|mni|{{{1|}}}| }}{{Languages/Lang|th|{{{1|}}}| }}{{Languages/Lang|lo|{{{1|}}}| }}{{Languages/Lang|dz|{{{1|}}}| }}{{Languages/Lang|bo|{{{1|}}}| }}{{Languages/Lang|kjp|{{{1|}}}| }}{{Languages/Lang|bug|{{{1|}}}| }}{{Languages/Lang|shn|{{{1|}}}| }}{{Languages/Lang|mnw|{{{1|}}}| }}{{Languages/Lang|my|{{{1|}}}| }}{{Languages/Lang|km|{{{1|}}}| }}{{Languages/Lang|nod|{{{1|}}}| }}{{Languages/Lang|ban-bali|{{{1|}}}| }}{{Languages/Lang|sat|{{{1|}}}| }}{{Languages/Lang|chr|{{{1|}}}| }}{{Languages/Lang|ike-cans|{{{1|}}}| }}{{Languages/Lang|iu|{{{1|}}}| }}{{Languages/Lang|got|{{{1|}}}| }}{{Languages/Lang|tzm|{{{1|}}}| }}{{Languages/Lang|zgh|{{{1|}}}| }}{{Languages/Lang|shi-tfng|{{{1|}}}| }}{{Languages/Lang|ti|{{{1|}}}| }}{{Languages/Lang|am|{{{1|}}}| }}{{Languages/Lang|ii|{{{1|}}}| }}{{Languages/Lang|ko-kp|{{{1|}}}| }}{{Languages/Lang|ko|{{{1|}}}| }}{{Languages/Lang|ja|{{{1|}}}| }}{{Languages/Lang|zh|{{{1|}}}| }}{{Languages/Lang|zh-tw|{{{1|}}}| }}{{Languages/Lang|zh-cn|{{{1|}}}| }}{{Languages/Lang|zh-sg|{{{1|}}}| }}{{Languages/Lang|zh-mo|{{{1|}}}| }}{{Languages/Lang|zh-hans|{{{1|}}}| }}{{Languages/Lang|zh-hant|{{{1|}}}| }}{{Languages/Lang|zh-hk|{{{1|}}}| }}{{Languages/Lang|zh-my|{{{1|}}}| }}{{Languages/Lang|wuu|{{{1|}}}| }}{{Languages/Lang|hak|{{{1|}}}| }}{{Languages/Lang|lzh|{{{1|}}}| }}{{Languages/Lang|zh-classical|{{{1|}}}| }}{{Languages/Lang|zh-yue|{{{1|}}}| }}{{Languages/Lang|yue|{{{1|}}}| }}{{Languages/Lang|gan|{{{1|}}}| }}{{Languages/Lang|gan-hant|{{{1|}}}| }}{{Languages/Lang|gan-hans|{{{1|}}}| }}{{Languages/Lang|yi|{{{1|}}}| }}{{Languages/Lang|he|{{{1|}}}| }}{{Languages/Lang|ug-arab|{{{1|}}}| }}{{Languages/Lang|ar|{{{1|}}}| }}{{Languages/Lang|ug|{{{1|}}}| }}{{Languages/Lang|ur|{{{1|}}}| }}{{Languages/Lang|ary|{{{1|}}}| }}{{Languages/Lang|bqi|{{{1|}}}| }}{{Languages/Lang|ps|{{{1|}}}| }}{{Languages/Lang|pnb|{{{1|}}}| }}{{Languages/Lang|aeb-arab|{{{1|}}}| }}{{Languages/Lang|aeb|{{{1|}}}| }}{{Languages/Lang|azb|{{{1|}}}| }}{{Languages/Lang|arq|{{{1|}}}| }}{{Languages/Lang|sd|{{{1|}}}| }}{{Languages/Lang|bcc|{{{1|}}}| }}{{Languages/Lang|bgn|{{{1|}}}| }}{{Languages/Lang|skr-arab|{{{1|}}}| }}{{Languages/Lang|skr|{{{1|}}}| }}{{Languages/Lang|fa|{{{1|}}}| }}{{Languages/Lang|kk-arab|{{{1|}}}| }}{{Languages/Lang|kk-cn|{{{1|}}}| }}{{Languages/Lang|ku-arab|{{{1|}}}| }}{{Languages/Lang|ks-arab|{{{1|}}}| }}{{Languages/Lang|khw|{{{1|}}}| }}{{Languages/Lang|ckb|{{{1|}}}| }}{{Languages/Lang|sdh|{{{1|}}}| }}{{Languages/Lang|glk|{{{1|}}}| }}{{Languages/Lang|luz|{{{1|}}}| }}{{Languages/Lang|ota|{{{1|}}}| }}{{Languages/Lang|lki|{{{1|}}}| }}{{Languages/Lang|lrc|{{{1|}}}| }}{{Languages/Lang|mzn|{{{1|}}}| }}{{Languages/Lang|arz|{{{1|}}}| }}{{Languages/Lang|arc|{{{1|}}}| }}{{Languages/Lang|dv|{{{1|}}}| }}{{Languages/Lang|nqo|{{{1|}}}| clear={{{clear|both}}}}}}}</includeonly><noinclude> {{Documentation}} [[Category:Language link templates| ]] [[Category:Translation]] </noinclude> 28e85d00580c67cc8d5aa506aab59e2ef082c90d Template:Nmbox 10 46 78 2024-02-24T18:05:14Z Translation-category>MusikBot II 0 Changed protection settings for "[[Template:Nmbox]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <templatestyles src="Template:Nmbox/styles.css" /> <div class="nmbox noprint">{{#if: {{{image|}}}{{{header|}}} |<div class="nmbox-header">{{#if: {{{image|}}}|<div class="nmbox-image">{{{image|}}}</div>}}{{{header|}}} </div>}} {{#if:{{{text|}}}|<div class="nmbox-text">{{{text|}}}</div>}} </div><noinclude>{{documentation}}</noinclude> e557c052be3962967d3c2ad6a2f5a99a2ca4a8a4 Template:Nmbox/styles.css 10 47 80 2024-02-24T18:05:14Z Translation-category>MusikBot II 0 Changed protection settings for "[[Template:Nmbox/styles.css]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) text text/plain .nmbox { clear: both; background: #F6F9ED; border: 1px solid #AAA; box-sizing: border-box; margin: 2px 0; padding: 0; } .nmbox * { box-sizing: border-box; } .nmbox-header { background: #EEF3E2; padding: 4px 0.5em; font-weight: bold; text-align: center; white-space: nowrap } .nmbox-image { display: inline-block; } .nmbox-text { border-top: 1px solid #AAA; width: 100%; padding: 4px 0.5em; } @media screen and (min-width: 768px) { .nmbox-header { display: table-cell; border-right: 1px solid #AAA; width: 1%; } .nmbox-text { border-top: none; display: table-cell; } } 24c6a01b07b9d9cf44e7f110e8173db233e986e8 Module:Sprite 828 5 8 2024-04-02T06:57:30Z crafting>StuckInAHypickle 0 End of April Fools Scribunto text/plain local p = {} local CurrentFrame = mw.getCurrentFrame() function p.base( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) else f = CurrentFrame end local data = args.data and mw.loadData( 'Module:' .. args.data ) or {} local settings = data.settings -- Default settings local default = { scale = 1, sheetsize = 256, size = 16, pos = 1, align = 'text-top' } local defaultStyle = default if settings then if not settings.stylesheet then -- Make a separate clone of the current default settings defaultStyle = mw.clone( default ) end for k, v in pairs( settings ) do default[k] = v end end local setting = function( arg ) return args[arg] or default[arg] end local sprite = mw.html.create( 'span' ):addClass( 'sprite' ) -- mw.html's css method performs very slow escaping, which doubles the time it takes -- to run, so we'll construct the styles manually, and put them in the cssText -- method, which only does html escaping (which isn't slow) local styles = {} if not setting( 'nourl' ) and setting( 'url' ) then styles[#styles + 1] = 'background-image:' .. ( setting( 'url' ).url or setting( 'url' ) ) end if setting( 'stylesheet' ) then sprite:addClass( setting( 'classname' ) or mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite' ) elseif not setting( 'url' ) then styles[#styles + 1] = 'background-image:' .. p.getUrl( setting( 'image' ) or setting( 'name' ) .. 'Sprite.png' ).url end local class = setting( 'class' ) if class then sprite:addClass( class ) end local width = setting( 'width' ) or setting( 'size' ) local height = setting( 'height' ) or setting( 'size' ) local sheetWidth = setting( 'sheetsize' ) local tiles = sheetWidth / width local pos = setting( 'pos' ) - 1 local scale = setting( 'scale' ) local autoScale = setting( 'autoscale' ) if pos then local left = pos % tiles * width * scale local top = math.floor( pos / tiles ) * height * scale styles[#styles + 1] = 'background-position:-' .. left .. 'px -' .. top .. 'px' end if not autoScale and scale ~= defaultStyle.scale then styles[#styles + 1] = 'background-size:' .. sheetWidth * scale .. 'px auto' end if height ~= defaultStyle.size or width ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then styles[#styles + 1] = 'height:' .. height * scale .. 'px' styles[#styles + 1] = 'width:' .. width * scale .. 'px' end local align = setting( 'align' ) if align ~= defaultStyle.align then styles[#styles + 1] = 'vertical-align:' .. align end styles[#styles + 1] = setting( 'css' ) sprite:cssText( table.concat( styles, ';' ) ) local text = setting( 'text' ) local root local spriteText if text then if not args['wrap'] then root = mw.html.create( 'span' ):addClass( 'nowrap' ) end spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text ) end local title = setting( 'title' ) if title then ( root or sprite ):attr( 'title', title ) end if not root then root = mw.html.create( '' ) end root:node( sprite ) if spriteText then root:node( spriteText ) end local link = setting( 'link' ) or '' if link ~= '' and mw.ustring.lower( link ) ~= 'none' then -- External link if link:find( '//' ) then return '[' .. link .. ' ' .. tostring( root ) .. ']' end -- Internal link local linkPrefix = setting( 'linkprefix' ) or '' return '[[' .. linkPrefix .. link .. '|' .. tostring( root ) .. ']]' end return tostring( root ) end function p.sprite( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) else f = CurrentFrame end local data = args.data and mw.loadData( 'Module:' .. args.data ) or {} local categories = {} local idData = args.iddata if not idData then local name = args.name or data.settings.name local id = mw.text.trim( tostring( args[1] or '' ) ) idData = data.ids[id] or data.ids[mw.ustring.lower( id ):gsub( '[%s%+]', '-' )] end local title = mw.title.getCurrentTitle() -- Remove categories on language pages, talk pages, and in User/UserWiki/UserProfile namespaces local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' ) if idData then if idData.deprecated then args.class = ( args.class or '' ) .. ' sprite-deprecated' if not disallowCats then categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages using deprecated sprite names', project = 0 } } end end args.pos = idData.pos elseif not disallowCats then categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages with missing sprites', project = 0 } } end return p.base( args ), table.concat( categories ) end function p.link( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) end local link = args[1] if args[1] and not args.id then link = args[1]:match( '^(.-)%+' ) or args[1] end local text if not args.notext then text = args.text or args[2] or link end args[1] = args.id or args[1] args.link = args.link or link args.text = text return p.sprite( args ) end function p.getUrl( image, query, classname ) local f = CurrentFrame local t = { url = f:expandTemplate{ title = 'FileUrl', args = { image, query = query } }, } if classname and classname ~= '' then t.style = f:expandTemplate{ title = 'FileUrlStyle', args = { classname, image, query = query } } end return t end function p.getParsedUrlStyle( f ) local args = f:getParent().args local module = args[1] return require( 'Module:' .. module ).settings.url.style end function p.doc( f ) local args = f if f == CurrentFrame then args = f.args else f = CurrentFrame end local dataPage = mw.text.trim( args[1] ) local data = mw.loadData( 'Module:' .. dataPage ) local getProtection = function( title, action, extra ) local protections = { 'edit' } if extra then protections[#protections + 1] = extra end local addProtection = function( protection ) if protection == 'autoconfirmed' then protection = 'editsemiprotected' elseif protection == 'sysop' then protection = 'editprotected' end protections[#protections + 1] = protection end local direct = title.protectionLevels[action] or {} for _, protection in ipairs( direct ) do addProtection( protection ) end local cascading = title.cascadingProtection.restrictions[action] or {} if #cascading > 0 then protections[#protections + 1] = 'protect' end for _, protection in ipairs( cascading ) do addProtection( protection ) end return table.concat( protections, ',' ) end local spriteStyle = '' if data.settings.url and data.settings.url.style then spriteStyle = data.settings.url.style end local dataTitle = mw.title.new( 'Module:' .. dataPage ) -- Temporary until this is updated local classname = '' if data.settings.stylesheet then classname = data.settings.classname or mw.ustring.lower( data.settings.name:gsub( ' ', '-' ) ) .. '-sprite' end local spritesheet = data.settings.image or data.settings.name .. 'Sprite.png' local spriteTitle = mw.title.new( 'File:' .. spritesheet ) local dataProtection = getProtection( dataTitle, 'edit' ) local spriteProtection = getProtection( spriteTitle, 'upload', 'upload,reupload' ) local body = mw.html.create( 'div' ):attr( { id = 'spritedoc', ['data-dataprotection'] = dataProtection, ['data-datatimestamp'] = f:callParserFunction( 'REVISIONTIMESTAMP', 'Module:' .. dataPage ), ['data-datapage'] = 'Module:' .. dataPage, ['data-spritesheet'] = spritesheet, ['data-spriteprotection'] = spriteProtection, ['data-urlfunc'] = "require( [[Module:Sprite]] ).getUrl( '" .. spritesheet .. "', '$1', '" .. classname .. "' )", ['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. dataPage .. '|refresh=1}}' ), ['data-settings'] = mw.text.jsonEncode( data.settings ), } ) local sections = {} for _, sectionData in ipairs( data.sections or { name = 'Uncategorized' } ) do local sectionTag = body:tag( 'div' ):addClass( 'spritedoc-section' ):attr( 'data-section-id', sectionData.id ) sectionTag:tag( 'h3' ):wikitext( sectionData.name ) sections[sectionData.id] = { boxes = sectionTag:tag( 'ul' ):addClass( 'spritedoc-boxes' ) } end local keyedData = {} local i = 1 for name, idData in pairs( data.ids ) do keyedData[i] = { sortKey = mw.ustring.lower( name ), name = name, data = idData } i = i + 1 end table.sort( keyedData, function( a, b ) return a.sortKey < b.sortKey end ) for _, data in ipairs( keyedData ) do local idData = data.data local pos = idData.pos local section = sections[idData.section] local names = section[pos] if not names then local box = section.boxes:tag( 'li' ):addClass( 'spritedoc-box' ):attr( 'data-pos', pos ) box:tag( 'div' ):addClass( 'spritedoc-image' ) :wikitext( p.base{ pos = pos, data = dataPage, nourl = spriteStyle ~= '' } ) names = box:tag( 'ul' ):addClass( 'spritedoc-names' ) section[pos] = names end local nameElem = mw.html.create( 'li' ):addClass( 'spritedoc-name' ) local codeElem = nameElem:tag( 'code' ):wikitext( data.name ) if idData.deprecated then codeElem:addClass( 'spritedoc-deprecated' ) end names:wikitext( tostring( nameElem ) ) end if args.refresh then return '', '', tostring( body ) end local styles = f:callParserFunction( '#widget:SpriteDoc.css' ) return styles, spriteStyle, tostring( body ) end return p 166303957bd087cb90e463787612899b203fc5bb 9 8 2024-04-28T15:47:50Z Axxyyy 2 1 revision imported Scribunto text/plain local p = {} local CurrentFrame = mw.getCurrentFrame() function p.base( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) else f = CurrentFrame end local data = args.data and mw.loadData( 'Module:' .. args.data ) or {} local settings = data.settings -- Default settings local default = { scale = 1, sheetsize = 256, size = 16, pos = 1, align = 'text-top' } local defaultStyle = default if settings then if not settings.stylesheet then -- Make a separate clone of the current default settings defaultStyle = mw.clone( default ) end for k, v in pairs( settings ) do default[k] = v end end local setting = function( arg ) return args[arg] or default[arg] end local sprite = mw.html.create( 'span' ):addClass( 'sprite' ) -- mw.html's css method performs very slow escaping, which doubles the time it takes -- to run, so we'll construct the styles manually, and put them in the cssText -- method, which only does html escaping (which isn't slow) local styles = {} if not setting( 'nourl' ) and setting( 'url' ) then styles[#styles + 1] = 'background-image:' .. ( setting( 'url' ).url or setting( 'url' ) ) end if setting( 'stylesheet' ) then sprite:addClass( setting( 'classname' ) or mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite' ) elseif not setting( 'url' ) then styles[#styles + 1] = 'background-image:' .. p.getUrl( setting( 'image' ) or setting( 'name' ) .. 'Sprite.png' ).url end local class = setting( 'class' ) if class then sprite:addClass( class ) end local width = setting( 'width' ) or setting( 'size' ) local height = setting( 'height' ) or setting( 'size' ) local sheetWidth = setting( 'sheetsize' ) local tiles = sheetWidth / width local pos = setting( 'pos' ) - 1 local scale = setting( 'scale' ) local autoScale = setting( 'autoscale' ) if pos then local left = pos % tiles * width * scale local top = math.floor( pos / tiles ) * height * scale styles[#styles + 1] = 'background-position:-' .. left .. 'px -' .. top .. 'px' end if not autoScale and scale ~= defaultStyle.scale then styles[#styles + 1] = 'background-size:' .. sheetWidth * scale .. 'px auto' end if height ~= defaultStyle.size or width ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then styles[#styles + 1] = 'height:' .. height * scale .. 'px' styles[#styles + 1] = 'width:' .. width * scale .. 'px' end local align = setting( 'align' ) if align ~= defaultStyle.align then styles[#styles + 1] = 'vertical-align:' .. align end styles[#styles + 1] = setting( 'css' ) sprite:cssText( table.concat( styles, ';' ) ) local text = setting( 'text' ) local root local spriteText if text then if not args['wrap'] then root = mw.html.create( 'span' ):addClass( 'nowrap' ) end spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text ) end local title = setting( 'title' ) if title then ( root or sprite ):attr( 'title', title ) end if not root then root = mw.html.create( '' ) end root:node( sprite ) if spriteText then root:node( spriteText ) end local link = setting( 'link' ) or '' if link ~= '' and mw.ustring.lower( link ) ~= 'none' then -- External link if link:find( '//' ) then return '[' .. link .. ' ' .. tostring( root ) .. ']' end -- Internal link local linkPrefix = setting( 'linkprefix' ) or '' return '[[' .. linkPrefix .. link .. '|' .. tostring( root ) .. ']]' end return tostring( root ) end function p.sprite( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) else f = CurrentFrame end local data = args.data and mw.loadData( 'Module:' .. args.data ) or {} local categories = {} local idData = args.iddata if not idData then local name = args.name or data.settings.name local id = mw.text.trim( tostring( args[1] or '' ) ) idData = data.ids[id] or data.ids[mw.ustring.lower( id ):gsub( '[%s%+]', '-' )] end local title = mw.title.getCurrentTitle() -- Remove categories on language pages, talk pages, and in User/UserWiki/UserProfile namespaces local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' ) if idData then if idData.deprecated then args.class = ( args.class or '' ) .. ' sprite-deprecated' if not disallowCats then categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages using deprecated sprite names', project = 0 } } end end args.pos = idData.pos elseif not disallowCats then categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages with missing sprites', project = 0 } } end return p.base( args ), table.concat( categories ) end function p.link( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) end local link = args[1] if args[1] and not args.id then link = args[1]:match( '^(.-)%+' ) or args[1] end local text if not args.notext then text = args.text or args[2] or link end args[1] = args.id or args[1] args.link = args.link or link args.text = text return p.sprite( args ) end function p.getUrl( image, query, classname ) local f = CurrentFrame local t = { url = f:expandTemplate{ title = 'FileUrl', args = { image, query = query } }, } if classname and classname ~= '' then t.style = f:expandTemplate{ title = 'FileUrlStyle', args = { classname, image, query = query } } end return t end function p.getParsedUrlStyle( f ) local args = f:getParent().args local module = args[1] return require( 'Module:' .. module ).settings.url.style end function p.doc( f ) local args = f if f == CurrentFrame then args = f.args else f = CurrentFrame end local dataPage = mw.text.trim( args[1] ) local data = mw.loadData( 'Module:' .. dataPage ) local getProtection = function( title, action, extra ) local protections = { 'edit' } if extra then protections[#protections + 1] = extra end local addProtection = function( protection ) if protection == 'autoconfirmed' then protection = 'editsemiprotected' elseif protection == 'sysop' then protection = 'editprotected' end protections[#protections + 1] = protection end local direct = title.protectionLevels[action] or {} for _, protection in ipairs( direct ) do addProtection( protection ) end local cascading = title.cascadingProtection.restrictions[action] or {} if #cascading > 0 then protections[#protections + 1] = 'protect' end for _, protection in ipairs( cascading ) do addProtection( protection ) end return table.concat( protections, ',' ) end local spriteStyle = '' if data.settings.url and data.settings.url.style then spriteStyle = data.settings.url.style end local dataTitle = mw.title.new( 'Module:' .. dataPage ) -- Temporary until this is updated local classname = '' if data.settings.stylesheet then classname = data.settings.classname or mw.ustring.lower( data.settings.name:gsub( ' ', '-' ) ) .. '-sprite' end local spritesheet = data.settings.image or data.settings.name .. 'Sprite.png' local spriteTitle = mw.title.new( 'File:' .. spritesheet ) local dataProtection = getProtection( dataTitle, 'edit' ) local spriteProtection = getProtection( spriteTitle, 'upload', 'upload,reupload' ) local body = mw.html.create( 'div' ):attr( { id = 'spritedoc', ['data-dataprotection'] = dataProtection, ['data-datatimestamp'] = f:callParserFunction( 'REVISIONTIMESTAMP', 'Module:' .. dataPage ), ['data-datapage'] = 'Module:' .. dataPage, ['data-spritesheet'] = spritesheet, ['data-spriteprotection'] = spriteProtection, ['data-urlfunc'] = "require( [[Module:Sprite]] ).getUrl( '" .. spritesheet .. "', '$1', '" .. classname .. "' )", ['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. dataPage .. '|refresh=1}}' ), ['data-settings'] = mw.text.jsonEncode( data.settings ), } ) local sections = {} for _, sectionData in ipairs( data.sections or { name = 'Uncategorized' } ) do local sectionTag = body:tag( 'div' ):addClass( 'spritedoc-section' ):attr( 'data-section-id', sectionData.id ) sectionTag:tag( 'h3' ):wikitext( sectionData.name ) sections[sectionData.id] = { boxes = sectionTag:tag( 'ul' ):addClass( 'spritedoc-boxes' ) } end local keyedData = {} local i = 1 for name, idData in pairs( data.ids ) do keyedData[i] = { sortKey = mw.ustring.lower( name ), name = name, data = idData } i = i + 1 end table.sort( keyedData, function( a, b ) return a.sortKey < b.sortKey end ) for _, data in ipairs( keyedData ) do local idData = data.data local pos = idData.pos local section = sections[idData.section] local names = section[pos] if not names then local box = section.boxes:tag( 'li' ):addClass( 'spritedoc-box' ):attr( 'data-pos', pos ) box:tag( 'div' ):addClass( 'spritedoc-image' ) :wikitext( p.base{ pos = pos, data = dataPage, nourl = spriteStyle ~= '' } ) names = box:tag( 'ul' ):addClass( 'spritedoc-names' ) section[pos] = names end local nameElem = mw.html.create( 'li' ):addClass( 'spritedoc-name' ) local codeElem = nameElem:tag( 'code' ):wikitext( data.name ) if idData.deprecated then codeElem:addClass( 'spritedoc-deprecated' ) end names:wikitext( tostring( nameElem ) ) end if args.refresh then return '', '', tostring( body ) end local styles = f:callParserFunction( '#widget:SpriteDoc.css' ) return styles, spriteStyle, tostring( body ) end return p 166303957bd087cb90e463787612899b203fc5bb Template:FileUrl 10 3 4 2024-04-08T16:42:04Z crafting>Grunny 0 allow thumbnail to be optimised, per disucssion with admins wikitext text/x-wiki <includeonly>{{ #ifexist: File:{{PAGENAME:{{{1}}}}} }}{{ #widget: FileUrl | url = {{ #urldecode: {{ #sub: {{filepath: {{#titleparts: {{PAGENAME:{{{1}}}}}}} | {{{2|}}} }} | {{ #len: {{ #explode: {{filepath: Wiki.png}} | b/bc/ }} }} }} }}{{#if: {{{query|}}} | &{{{query}}} }} }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page --> </noinclude> d5ea447ca6010e54f806a89604d9b39403d9b46e 5 4 2024-04-28T15:47:49Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{ #ifexist: File:{{PAGENAME:{{{1}}}}} }}{{ #widget: FileUrl | url = {{ #urldecode: {{ #sub: {{filepath: {{#titleparts: {{PAGENAME:{{{1}}}}}}} | {{{2|}}} }} | {{ #len: {{ #explode: {{filepath: Wiki.png}} | b/bc/ }} }} }} }}{{#if: {{{query|}}} | &{{{query}}} }} }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page --> </noinclude> d5ea447ca6010e54f806a89604d9b39403d9b46e Main Page 0 1 1 2024-04-28T12:26:28Z MediaWiki default 1 Welcome to Miraheze! wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phorge:|Phorge]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 070d9e6457eab136df99905438a1f57c037772b0 Module:Random 828 13 25 24 2024-04-28T15:47:55Z Axxyyy 2 1 revision imported Scribunto text/plain local p = {} local seeded local randomseed = math.randomseed local random = math.random function p.random( m, n ) if not seeded then p.seed() end return random( n and m or m and 1 or 0, n or m or 1 ) end function p.seed( seed ) randomseed( seed or ( os.time() + os.clock() * 1000000000 ) ) -- First few values of seed is not guaranteed to be random on some platforms random() random() seeded = true end return p 9b7fa144f6e50a8f87ea22766f60b3785413e3b9 Module:UI 828 14 27 26 2024-04-28T15:47:55Z Axxyyy 2 1 revision imported Scribunto text/plain local slot = require( [[Module:Inventory slot]] ).slot local addSlot = function( args, item, prefix, class, default ) local none, nostacksize prefix = prefix or '' if #prefix == 0 then none = 'none' nostacksize = ((item == '' or nil) and '') or (args and args[item] and args[item]:gsub( '[,%d]', '' ) or '') end return slot{ nostacksize or args[item], mod = args.Mod, link = none or args[prefix .. 'link'], title = none or args[prefix .. 'title'], class = class, default = default, parsed = args.parsed } end function experience_image(exp_value) local MINMAX = { {-32768, 2}, {3, 6}, {7, 16}, {17, 36}, {37, 72}, {73, 148}, {149, 306}, {307, 616}, {617, 1236}, {1237, 2476}, {2477, 32767} } local EXP_IMGS = { "Experience Orb Value -32768-2.png", "Experience Orb Value 3-6.png", "Experience Orb Value 7-16.png", "Experience Orb Value 17-36.png", "Experience Orb Value 37-72.png", "Experience Orb Value 73-148.png", "Experience Orb Value 149-306.png", "Experience Orb Value 307-616.png", "Experience Orb Value 617-1236.png", "Experience Orb Value 1237-2476.png", "Experience Orb Value 2477-32767.png", } local n = assert( tonumber(exp_value), "Module:UI: Experience value is not a number (" .. exp_value .. ")" ) local idx = 2; exp = tonumber( exp_value ) if exp <= MINMAX[#MINMAX][2] then for i = 1, #MINMAX do if MINMAX[i][1] < exp and MINMAX[i][2] >= exp then idx = i break end end end return tostring( EXP_IMGS[idx] ) end local p = {} -- Crafting table function p.craftingTable( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Crafting_Table pixel-image' ) local input = body:tag( 'span' ):addClass( 'mcui-input' ) for num = 1, 3 do local row = input:tag( 'span' ):addClass( 'mcui-row' ) for _, letter in ipairs{ 'A', 'B', 'C' } do row:wikitext( addSlot( args, letter .. num, 'I' ) ) end end local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' ):done() if args.arrow or '' ~= '' then arrow:css( 'background-image', '{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}' ) end body :tag( 'span' ) :addClass( 'mcui-output' ) :wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) ) local shapeless = args.shapeless or '' local fixed = args.fixed or '' if shapeless ~= '' or fixed ~= '' then local icon = body:tag( 'span' ) :addClass( 'mcui-icons' ) :tag( 'span' ) :tag( 'br' ) :done() if shapeless ~= '' then icon:addClass( 'mcui-shapeless' ) :attr( 'title', 'This recipe is shapeless, the inputs may be placed in any arrangement in the crafting grid.' ) elseif fixed ~= '' then local notFixed = args.notfixed or '' local exceptFixed = '' if notFixed ~= '' then exceptFixed = '; except for ' .. notFixed .. ', which can go anywhere' end icon:addClass( 'mcui-fixed' ) :attr( 'title', 'This recipe is fixed, the input arrangement may not be moved or mirrored in the crafting grid' .. exceptFixed .. '.' ) end end return tostring( mw.html.create( 'div' ):node( body ) ) end -- Furnace function p.furnace( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Furnace pixel-image' ) local input = body:tag( 'span' ):addClass( 'mcui-input' ) input:wikitext( addSlot( args, 'Input', 'I' ) ) local fuel = input:tag( 'span' ):addClass( 'mcui-fuel' ):tag( 'br' ):done() local fuelImg = args.FuelUsage or '' local burning = args.Input or '' ~= '' and args.Fuel or '' ~= '' if not burning then fuel:addClass( 'mcui-inactive' ) if fuelImg ~= '' then fuelImg = fuelImg .. ' (in-active)' end end if fuelImg ~= '' then fuel:css( 'background-image', '{{FileUrl|' .. fuelImg .. ' (' .. args.Mod .. ').png}}' ) end input:wikitext( addSlot( args, 'Fuel', 'F' ) ) local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' ):done() local arrowImg = args.Progress or '' if not burning or ( args.Output or '' ) == '' then arrow:addClass( 'mcui-inactive' ) if arrowImg ~= '' then arrowImg = arrowImg .. ' (in-active)' end end if arrowImg ~= '' then arrow:css( 'background-image', '{{FileUrl|' .. arrowImg .. ' Progress (' .. args.Mod .. ').png}}' ) end body :tag( 'span' ) :addClass( 'mcui-output' ) :wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) ) args.Experience = args.Experience or '' if args.Experience ~= '' then -- Converts commas to dots, removes all spaces and splits the arguments with semicolon. local split = mw.text.split(string.gsub(args.Experience, '[ ,]', {[' '] = '', [','] = '.'}), ';', true) local animated = body:tag('span'):attr('title', 'If there is a fractional part, it means the recipe has a chance equal to the fractional part of rewarding an additional XP point.') :addClass('animated'):cssText('position:absolute;top:92px;left:108px;text-align:center;width:70px;') local isNotFirst = true for i, v in ipairs(split) do assert(tonumber(v), 'Module:UI: "' .. v .. '" is not a valid number') local xp = tonumber(v) animated:tag('span') :addClass(isNotFirst and 'animated-active' or nil) :wikitext('<span style="display:inline-block;margin-top:3px;width:16px;height:16px;vertical-align:top;background-size:16px 16px;background-image:{{FileUrl|' .. experience_image(xp) .. '}}"></span>' .. '<span style="display:inline-block;vertical-align:top;font-family:Minecraft;font-size:16px;color:#404040">' .. ('&nbsp;' and xp > 72 or '') .. xp .. '</span>') isNotFirst = false end end return tostring( mw.html.create( 'div' ):node( body ) ) end -- Brewing Stand function p.brewingStand( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Brewing_Stand pixel-image' ) local input = body:tag( 'span' ):addClass( 'mcui-input' ) input:tag( 'span' ):addClass( 'mcui-bubbling' ):tag( 'br' ) input:wikitext( addSlot( args, 'Input', 'I' ) ) input:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' ) if ( args.Input or '' ) == '' or ( ( args.Output1 or '' ) == '' and ( args.Output2 or '' ) == '' and ( args.Output3 or '' ) == '' ) then input:addClass( 'mcui-inactive' ) end body:tag( 'span' ):addClass( 'mcui-paths' ):tag( 'br' ) local output = body:tag( 'span' ):addClass( 'mcui-output' ) for i = 1, 3 do output:wikitext( addSlot( args, 'Output' .. i, 'O' .. i, 'mcui-output' .. i ) ) end return tostring( mw.html.create( 'div' ):node( body ) ) end -- Stonecutter function p.stonecutter( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Stonecutter pixel-image' ) local input = body:tag( 'span' ):addClass( 'mcui-input' ) input:wikitext( addSlot( args, 'Input', 'I' ) ) local arrow = body:tag( 'span' ):addClass( 'mcui-stonecutterArrow' ) if (args.arrow or '') ~= '' then arrow:css( 'background-image', '{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}' ) end arrow:wikitext( addSlot( args, 'Output', '', 'invslot-plain mcui-stonecutterSprite' ) ) body :tag( 'span' ) :addClass( 'mcui-output' ) :wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) ) return tostring( mw.html.create( 'div' ):node( body ) ) end -- Loom function p.loom( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Loom pixel-image' ) local tapestry = body:tag( 'span' ):addClass( 'mcui-tapestry' ) if args.Banner and #args.Banner>0 then tapestry:wikitext( addSlot( args, 'Banner', 'B', 'mcui-inputBanner' ) ) end if args.Dye and #args.Dye>0 then tapestry:wikitext( addSlot( args, 'Dye', 'D', 'mcui-inputDye' ) ) end if args.Pattern and #args.Pattern>0 then tapestry:wikitext( addSlot( args, 'Pattern', 'P', 'mcui-inputPattern' ) ) end tapestry:tag( 'span' ):tag( 'br' ):done() local arrow = body:tag( 'span' ):addClass( 'mcui-loomArrow' ) if args.arrow or '' ~= '' then arrow:css( 'background-image', '{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}' ) end local sprite = args.Sprite local bannerSprite if sprite and #sprite>0 then local animate = require( [[Module:AnimateSprite]] ).animate bannerSprite = animate{ args.Sprite, sheet = 'SlotSprite' } else bannerSprite = '<br>' end arrow :tag( 'span' ) :addClass( 'mcui-bannerSprite' ) :wikitext( bannerSprite ) body :tag( 'span' ) :addClass( 'mcui-output' ) :wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) ) return tostring( mw.html.create( 'div' ):node( body ) ) end -- Grindstone function p.grindstone( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Grindstone pixel-image' ) local grindstone = body:tag( 'span' ):addClass( 'mcui-grindstone' ) grindstone:wikitext( addSlot( args, 'Input1', 'I1', 'mcui-input1' ) ) grindstone:wikitext( addSlot( args, 'Input2', 'I2', 'mcui-input2' ) ) local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' ) if args.arrow or '' ~= '' then arrow:css( 'background-image', '{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}' ) end body :tag( 'span' ) :addClass( 'mcui-output' ) :wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) ) return tostring( mw.html.create( 'div' ):node( body ) ) end -- Smithing Table function p.smithing (f) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end return tostring( mw.html.create( 'div' ):node( body ) ) end return p 97a9c6a0c750f51165133aca6edc1af4228188c5 Template:Template link 10 15 29 28 2024-04-28T15:47:56Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{#if:{{yesno|{{{code|yes}}}}}|<code>}}{{{{#if: {{{subst|}}}|[[WP:SUBSTITUTION|subst]]: }}[[{{#if: {{#pos: {{{1}}} | : }} || Template: }}{{{1}}}|{{ #ifeq: {{NAMESPACE:{{{1}}}}} | Template | {{PAGENAME:{{{1}}}}} | {{{1}}} }}]]{{ #if: {{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{2|}}} }}{{ #if: {{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{3|}}} }}{{ #if: {{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{4|}}} }}{{ #if: {{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{5|}}} }}{{ #if: {{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{6|}}} }}{{ #if: {{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{7|}}} }}{{ #if: {{{8|}}}{{{9|}}} | {{!}}{{{8|}}} }}{{ #if: {{{9|}}} | {{!}}{{{9|}}} }}}}{{#if:{{yesno|{{{code|yes}}}}}|</code>}}{{#if: {{#pos: {{{1}}} | File: }}{{#pos: {{{1}}} | Category: }} | [[Category:Fixme]] }}</includeonly><noinclude> <!-- categories/interwikis on the /doc subpage, not here --> {{Documentation}} </noinclude> 42669227d2179e342a03b8be8115ada28536e13b Template:Tl 10 16 31 30 2024-04-28T15:47:56Z Axxyyy 2 1 revision imported wikitext text/x-wiki #REDIRECT [[Template:Template link]] fb9a6b420e13178e581af6e7d64274cd30a79017 Template:Documentation 10 17 33 32 2024-04-28T15:47:56Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke: documentation | page }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwikis on the documentation page --> </noinclude> c461cd371bd48a195ce5385c361e8f7e71be1463 63 33 2024-04-30T01:03:16Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke: documentation | page }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwikis on the documentation page --> </noinclude> c461cd371bd48a195ce5385c361e8f7e71be1463 Template:Documentation header 10 18 35 34 2024-04-28T15:47:57Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke: documentation | docPage }}</includeonly><noinclude> {{documentation|content= Used on the top of a documentation page. }} [[Category:Documentation templates|*]] [[tr:Şablon:Belgeleme üstbilgisi]] [[zh:Template:Documentation header]] fbfd2788ba2c707df1f24456c97112cb96e156fb Module:Documentation 828 19 37 36 2024-04-28T15:47:57Z Axxyyy 2 1 revision imported Scribunto text/plain local p = {} local defaultDocPage = 'doc' local getType = function( namespace, page ) local pageType = 'template' if namespace == 'Module' then pageType = 'module' elseif namespace == 'Widget' then pageType = 'widget' elseif page.fullText:gsub( '/' .. defaultDocPage .. '$', '' ):find( '%.css$' ) then pageType = 'stylesheet' elseif page.fullText:gsub( '/' .. defaultDocPage .. '$', '' ):find( '%.js$' ) then pageType = 'script' elseif namespace == 'MediaWiki' then pageType = 'message' end return pageType end -- Creating a documentation page or transclusion through {{subst:docc}} function p.create( f ) local args = require( 'Module:ProcessArgs' ).norm() local page = mw.title.getCurrentTitle() local docPage = args.page or page.nsText .. ':' .. page.baseText .. '/' .. defaultDocPage local out if not args.content and tostring( page ) == docPage then out = f:preprocess( '{{subst:Template:Documentation/preload}}' ) else local templateArgs = {} for _, key in ipairs{ 'type', 'page', 'content' } do local val = args[key] if val then if key == 'content' then val = '\n' .. val .. '\n' end table.insert( templateArgs, key .. '=' .. val ) end end out = '{{documentation|' .. table.concat( templateArgs, '|' ) .. '}}' out = out:gsub( '|}}', '}}' ) if not args.content then out = out .. '\n<!-- Put categories/interwikis on the documentation page -->' end end if not mw.isSubsting() then out = f:preprocess( out ) if not args.nocat then out = out .. '[[Category:Pages with templates requiring substitution]]' end end return out end -- Header on the documentation page function p.docPage( f ) local args = require( 'Module:ProcessArgs' ).merge( true ) local badDoc = args.baddoc if f:callParserFunction( '#dplvar', '$doc noheader' ) == '1' then if badDoc then f:callParserFunction( '#dplvar:set', '$doc bad', '1' ) end return end local page = mw.title.getCurrentTitle() local subpage = page.subpageText if subpage == 'sandbox' or subpage == 'testcases' then page = page.basePageTitle end local namespace = page.nsText local pageType = mw.ustring.lower( args.type or getType( namespace, page ) ) local body = mw.html.create( 'div' ):addClass( 'documentation-header' ) body :addClass( badDoc and 'documentation-badDoc' or '' ) :css{ ['margin-bottom'] = '0.8em', padding = '0.8em 1em 0.7em', ['background-color'] = '#' .. ( badDoc and '888888' or '33333333' ), border = '1px solid #AAA' } :tag( 'div' ) :attr( 'id', 'documentation-header-tools' ) :css( 'float', 'right' ) :wikitext( '[[', page:fullUrl( 'action=purge' ), ' ' .. f:preprocess('{{lc:{{int:page-header-action-button-purge}}}}') .. ']]' ) :done() :wikitext( 'This is the documentation page. It ', pageType == 'module' and 'will' or 'should', ' be transcluded into the main ', pageType, ' page. ', 'See [[Template:Documentation]] for more information' ) if badDoc then body:wikitext( "<br>'''This ", pageType, "'s documentation needs improving or additional information.'''" ) end if not ( args.nocat or namespace == 'User' ) then body:wikitext( '[[Category:Documentation pages]]' ) end return body end -- Wrapper around the documentation on the main page function p.page( f ) -- mw.text.trim uses mw.ustring.gsub, which silently fails on large strings local function trim( s ) return (s:gsub( '^[\t\r\n\f ]+', '' ):gsub( '[\t\r\n\f ]+$', '' )) --return string.gsub( s, '^[\t\r\n\f ]*(.-)[\t\r\n\f ]*$', '%1' ) end local args = require( 'Module:ProcessArgs' ).merge( true ) local page = mw.title.getCurrentTitle() local subpage = page.subpageText if subpage == 'sandbox' or subpage == 'testcases' then page = page.basePageTitle end local namespace = page.nsText local docText = trim( args.content or '' ) if docText == '' then docText = nil end local docPage local noDoc if docText then docPage = page else docPage = mw.title.new( args.page or namespace .. ':' .. page.text .. '/' .. defaultDocPage ) noDoc = args.nodoc or not docPage.exists end local badDoc = args.baddoc local pageType = mw.ustring.lower( args.type or getType( namespace, page ) ) if not docText and not noDoc then f:callParserFunction( '#dplvar:set', '$doc noheader', '1' ) docText = trim( f:expandTemplate{ title = ':' .. docPage.fullText } ) if f:callParserFunction( '#dplvar', '$doc bad' ) == '1' then badDoc = 1 end if docText == '' then docText = nil noDoc = 1 end end if docText then docText = '\n' .. docText .. '\n' end local action = f:preprocess('{{lc:{{int:edit}}}}') local preload = '' local docClass = '' local colour = '00000000' local message local category if noDoc then action = f:preprocess('{{lc:{{int:create}}}}') preload = '&preload=Template:Documentation/preload' docClass = 'documentation-noDoc' colour = '33333333' message = "'''This " .. pageType .. " has no documentation. " .. "If you know how to use this " .. pageType .. ", please create it.'''" if not ( args.nocat or namespace == 'User' ) then category = pageType .. 's with no documentation' if not mw.title.new( 'Category:' .. category ).exists then category = 'Pages with no documentation' end end elseif badDoc then docClass = 'documentation-badDoc' colour = 'F9F2EA' message = "'''This " .. pageType .. "'s documentation needs improving or additional information.'''\n" if not ( args.nocat or namespace == 'User' ) then category = pageType .. 's with bad documentation' if not mw.title.new( 'Category:' .. category ).exists then category = 'Pages with bad documentation' end end end local links = { '[' .. docPage:fullUrl( 'action=edit' .. preload ) .. ' ' .. action .. ']', '[' .. docPage:fullUrl( 'action=history' ) .. ' ' .. f:preprocess('{{lc:{{int:history short}}}}') .. ']', '[' .. page:fullUrl( 'action=purge' ) .. ' ' .. f:preprocess('{{lc:{{int:page-header-action-button-purge}}}}') .. ']' } if not noDoc and page ~= docPage then table.insert( links, 1, '[[' .. docPage.fullText .. '|' .. f:preprocess('{{lc:{{int:view}}}}') .. ']]' ) end links = mw.html.create( 'span' ) :attr( 'id', 'documentation-header-tools' ) :css( 'float', 'right' ) :wikitext( mw.text.nowiki( '[' ), table.concat( links, ' | ' ), mw.text.nowiki( ']' ) ) local body = mw.html.create( 'div' ):addClass( 'documentation' ) body :addClass( docClass ) :css{ ['background-color'] = '#' .. colour, border = '1px solid #AAA', padding = '0.8em 1em 0.7em', ['margin-top'] = '1em', clear = 'both' } local header = mw.html.create( 'div' ) :addClass( 'documentation-header-top' ) :css{ margin = '-0.8em -1em 0.8em', padding = '0.8em 1em 0.7em', ['background-color'] = '#33333333', ['border-bottom'] = 'inherit' } header :node( links ) :tag( 'span' ) :attr( 'id', 'documentation-header-title' ) :css{ ['font-weight'] = 'bold', ['font-size'] = '130%', ['margin-right'] = '1em', ['line-height'] = '1' } :wikitext( 'Documentation' ) local codePages = { module = true, stylesheet = true, script = true, } if not noDoc and codePages[pageType] then header :tag( 'span' ) :attr( 'id', 'documentation-jump-to-code' ) :css( 'white-space', 'nowrap' ) :wikitext( '[[#the-code|Jump to code ↴]]' ) end body :node( header ):done() :wikitext( message ) :wikitext( docText ) if not noDoc and page ~= docPage then body :tag( 'div' ) :addClass( 'documentation-header-bottom' ) :css{ margin = '0.7em -1em -0.7em', ['background-color'] = '#33333333', ['border-top'] = 'inherit', padding = '0.8em 1em 0.7em', clear = 'both' } :node( links ) :wikitext( 'The above documentation is transcluded from [[', docPage.fullText, ']].' ) end local anchor = '' if not noDoc and pageType ~= 'template' and pageType ~= 'message' then anchor = mw.html.create( 'div' ):attr( 'id', 'the-code' ) end return tostring( body ) .. tostring( anchor ) end return p 21bd039aea338542482dbf80b92e8ebf5465f0c3 Template:Lua 10 20 39 38 2024-04-28T15:47:58Z Axxyyy 2 1 revision imported wikitext text/x-wiki {{msgbox | image = Lua logo.svg | text = This {{#ifeq:{{NAMESPACENUMBER}}|828|module depends on|template uses}} '''<includeonly>[[</includeonly>Module:{{ucfirst: {{PAGENAME:{{{1|{{#ifeq:{{SUBPAGENAME}}|doc|{{BASEPAGENAME}}|{{PAGENAME}}}}}}}}} }}<includeonly>]]</includeonly>''', {{ #if: {{{data|}}} | with data stored in [[Module:{{ ucfirst: {{PAGENAME:{{{data}}}}} }}]]{{ #if: {{{data2|}}} | &#32;and [[Module:{{ ucfirst: {{PAGENAME:{{{data2}}}}} }}]] }} | a script written in [[wp:Lua|Lua]] }}.<br>{{ #if: {{{data|}}} | These scripts are written in [[wp:Lua|Lua]]. }} }}<includeonly>{{ #if: {{{nocat|}}} | | {{#switch: {{SUBPAGENAME}} | doc | sandbox | testcases = | {{#switch: {{NAMESPACENUMBER}} | 0 | 10 = [[Category:Lua-based templates]] }} }} }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwikis on the documentation page --> </noinclude> 1af47d4a3d4e04248e59e53d9a82bc8a35d14d51 Template:UI see also 10 21 41 40 2024-04-28T15:47:58Z Axxyyy 2 1 revision imported wikitext text/x-wiki * {{tl|Crafting Table}} * {{tl|Inventory Table}} * {{tl|Furnace}} * {{tl|Brewing Stand}} * {{tl|Stonecutter}} * {{tl|Loom}} * {{tl|Grindstone}} * {{tl|Hotbar}} * {{tl|Inventory}} * {{tl|Inventory slot}} * [[Module:UI]]<noinclude> {{Documentation}} <!-- Put categories/interwiki on the documentation page --> </noinclude> f7bc713ef11da21be62732d6a243da2412173562 Template:Crafting Table/doc 10 22 43 42 2024-04-28T15:47:59Z Axxyyy 2 1 revision imported wikitext text/x-wiki {{documentation header}} {{lua|UI}} This template is used to create an interface that looks similar to the [[Crafting Table|Crafting Table's]]. See [[Template:Inventory slot]] for basic usage, this documentation page will cover additional or different functions. Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead. __TOC__ == Usage == <pre style="max-width: 250px">{{Crafting Table |A1= |B1= |C1= |A2= |B2= Oak Wood Planks |C2= |A3= |B3= Oak Wood Planks |C3= |Output= Stick,4 }}</pre> ;produces: {{Crafting Table |A1= |B1= |C1= |A2= |B2= Oak Wood Planks |C2= |A3= |B3= Oak Wood Planks |C3= |Output= Stick,4 }} === Shapeless === If a recipe is shapeless, add shapeless=1 to the template, which will display an icon which when hovered over explains what a shapeless recipe is. <pre style="max-width: 236px">{{Crafting Table |shapeless= 1 |A1= |B1= Blaze Powder |C1= |A2= |B2= Coal,Charcoal |C2= |A3= |B3= Gunpowder |C3= |Output= Fire Charge,3 }}</pre> ;produces: {{Crafting Table |shapeless= 1 |A1= |B1= Blaze Powder |C1= |A2= |B2= Coal,Charcoal |C2= |A3= |B3= Gunpowder |C3= |Output= Fire Charge,3 }} The shapeless parameter does not support animation, so shapeless and non-shapeless recipes cannot be combined. === Fixed === If a recipe is fixed, add fixed=1 to the template, which will display an icon which when hovered over explains what a fixed recipe is. The <code>notfixed</code> parameter can also be set to specify exceptions. <pre style="max-width: 31em">{{Crafting Table |fixed= 1 |notfixed= the banner |B2= Banner |A3= Lapis Lazuli |B3= Lapis Lazuli |C3= Lapis Lazuli |Output= Blue Base Banner }}</pre> ;produces: {{Crafting Table |fixed= 1 |notfixed= the banner |B2= Banner |A3= Lapis Lazuli |B3= Lapis Lazuli |C3= Lapis Lazuli |Output= Blue Base Banner }} The fixed parameter does not support animation, so fixed, shapeless and normal recipes cannot be combined. === Animated === To make the slots animate, you make a list of blocks and objects you want to show, separated by semi-colons. <pre style="max-width: 616px">{{Crafting Table |A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli |A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli |A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli |Output= Lapis Lazuli,9; Lapis Lazuli Block }}</pre> ;produces: {{Crafting Table |A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli |A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli |A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli |Output= Lapis Lazuli,9; Lapis Lazuli Block }} <pre style="max-width: 602px">{{Crafting Table |A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block; Block of Netherite }}</pre> ;produces: {{Crafting Table |A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot |Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block; Block of Netherite }} === Mods === Mod images and normal images can be combined just like in a single slot. However, this usage is not recommended, as [https://ftb.gamepedia.com/Feed_The_Beast_Wiki:Minecraft_Wiki_exportation_project mod pages are currently being transferred to the FTB Wiki]. <!-- When uploading mod images, they must have the mod page name in parenthesis at the end. For example Fancystone (FancyPack). The Mod parameter can be used to set a default used for all parameters, this is best used when all items in the crafting table are modded items, or if the mod name is long and using the vanilla (v) parameter for the vanilla items in the table would be quicker. <pre style="max-width: 848px">{{Crafting Table |A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust |A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit |A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone |Output= IndustrialCraft:Advanced Circuit,2 }}</pre> ;or <pre style="max-width: 656px">{{Crafting Table |Mod= IndustrialCraft |A1= v:Redstone Dust |B1= Cable |C1= vanilla:Glowstone Dust |A2= Electronic Circuit |B2= V:Lapis Lazuli Block |C2= Electronic Circuit |A3= Vanilla:Glowstone Dust |B3= Cable |C3= v:Redstone Dust |Output= Advanced Circuit,2 }}</pre> ;produces: {{Crafting Table |A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust |A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit |A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone |Output= IndustrialCraft:Advanced Circuit,2 }} Note the links of the vanilla Minecraft items, compared to the IndustrialCraft items. Animation is fully supported between mod and vanilla items. --> == See also == {{UI see also}} <includeonly> [[Category:Inventory templates]] [[Category:Image templates]] [[de:Vorlage:Grid/Crafting Table]] [[es:Plantilla:Mesa de trabajo]] [[fr:Modèle:Grille/Établi]] [[it:Template:Grid/Crafting Table]] [[ja:テンプレート:Crafting Table]] [[ko:틀:Crafting Table]] [[nl:Template:Grid/Crafting Table]] [[pl:Szablon:Grid/Crafting Table]] [[pt:Predefinição:Bancada de trabalho]] [[ru:Шаблон:Верстак]] [[uk:Шаблон:Верстак]] [[zh:Template:Crafting Table]] </includeonly> <noinclude> [[de:Vorlage:Grid/Crafting Table/doc]] [[es:Plantilla:Mesa de trabajo/doc]] [[fr:Modèle:Grille/Établi/doc]] [[ja:テンプレート:Crafting Table/doc]] [[ko:틀:Crafting Table/doc]] [[nl:Template:Grid/Crafting Table/doc]] [[pl:Szablon:Grid/Crafting Table/doc]] [[pt:Predefinição:Bancada de trabalho/doc]] [[ru:Шаблон:Верстак/док]] [[uk:Шаблон:Верстак/док]] [[zh:Template:Crafting Table/doc]] </noinclude> 1f97eaff4bbd7dd9511988b592fb9360e879a2cb Main Page 0 1 44 1 2024-04-29T14:44:22Z Axxyyy 2 wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == I made this wiki as a place to document the features of my mods. This wiki will have all the items, blocks, and recipes of the mod. This wiki will be updated constantly. 92dd9c301b7a9a6904a54fbf4dadf7c1d432c79d Silicon 0 28 50 2024-04-29T19:59:24Z Axxyyy 2 Created page with "Ceramic is a basic material in Atomic Technology. {{Grid/Crafting Table |Mod= Atomic Technology |A2= V:Sand |B2= V:Clay |Output= Ceramic, 2 }} It is used to make [[Forge Casing]]s and [[Forge Controller]]s." wikitext text/x-wiki Ceramic is a basic material in Atomic Technology. {{Grid/Crafting Table |Mod= Atomic Technology |A2= V:Sand |B2= V:Clay |Output= Ceramic, 2 }} It is used to make [[Forge Casing]]s and [[Forge Controller]]s. 1c95c10c85f1642bdd1d4abcec534916883538e0 File:Grid Ceramic (Atomic Technology).png 6 37 59 2024-04-29T21:51:30Z Axxyyy 2 Ceramic wikitext text/x-wiki == Summary == Ceramic e010431ba73c6ad374a18be7dd94a236f71c7088 Template:Tlx 10 39 65 64 2024-04-30T01:03:17Z Axxyyy 2 1 revision imported wikitext text/x-wiki {{#if:{{{plain|}}}||<code>}}{{[[{{#if:{{{SISTER|}}}|{{{SISTER}}}:Template|Special:MyLanguage/{{ns:Template}}}}:{{{1|Tlx}}}|{{{1|Tlx}}}]]<!-- -->{{#if:{{{2|}}}|&#124;{{{2}}}}}<!-- -->{{#if:{{{3|}}}|&#124;{{{3}}}}}<!-- -->{{#if:{{{4|}}}|&#124;{{{4}}}}}<!-- -->{{#if:{{{5|}}}|&#124;{{{5}}}}}<!-- -->{{#if:{{{6|}}}|&#124;{{{6}}}}}<!-- -->{{#if:{{{7|}}}|&#124;{{{7}}}}}<!-- -->{{#if:{{{8|}}}|&#124;''...''}}}}{{#if:{{{plain|}}}||</code>}}<noinclude> {{documentation}} </noinclude> f2cb8c0397aa726f8314df231cfe853f25cab851 Template:Documentation/styles.css 10 40 67 66 2024-04-30T01:03:18Z Axxyyy 2 1 revision imported text text/plain /* {{PP-template}} */ .ts-doc-sandbox .mbox-image { padding:.75em 0 .75em .75em; } .ts-doc-doc { clear: both; background-color: #ecfcf4; border: 1px solid #a2a9b1; margin-top: 1em; padding: 5px; } .ts-doc-header { padding-bottom: 3px; border-bottom: 1px solid #a2a9b1; margin-bottom: 1ex; } .ts-doc-header .ts-tlinks-tlinks { display: inline-block; line-height: 24px; margin-left: 1em; } .ts-doc-header .ts-tlinks-tlinks a.external { color: #0645ad; } .ts-doc-header .ts-tlinks-tlinks a.external:visited { color: #0b0080; } .ts-doc-header .ts-tlinks-tlinks a.external:active { color: #faa700; } .ts-doc-content:after { content: ''; clear: both; display: block; } .ts-doc-heading { display: inline-block; padding-left: 55px; background: center left/50px no-repeat; background-image: url(https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png); background-image: url(https://upload.wikimedia.org/wikipedia/commons/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg); font-size: 1.5em; } .ts-doc-content > *:first-child, .ts-doc-footer > *:first-child { margin-top: .5em; } .ts-doc-content > *:last-child, .ts-doc-footer > *:last-child { margin-bottom: .5em; } .ts-doc-footer { background-color: #ecfcf4; border: 1px solid #a2a9b1; padding: .25em 1em; margin-top: .2em; font-style: italic; } .ts-doc-footer small { font-style: normal; } .ts-doc-sandbox { clear: both; } c37b0ddfd0b1c128c187ca56721d1c4e481b05ff Template:Uselang 10 41 69 68 2024-04-30T01:03:19Z Axxyyy 2 1 revision imported wikitext text/x-wiki {{#ifeq:{{Int:Lang}}|⧼Lang⧽|en|{{Int:Lang}}}}<noinclude>{{Doc}}</noinclude> cdb7e5da66ac1deb7310bf422b52c99913388742 Template:Dir 10 42 71 70 2024-04-30T01:03:19Z Axxyyy 2 1 revision imported wikitext text/x-wiki {{#switch:{{#if:{{{1|}}}|{{{1|}}}|{{Uselang}}}}|ar|arc|ary|arz|azb|bcc|bgn|ckb|bqi|dv|fa|fa-af|glk|ha-arab|he|kk-arab|kk-cn|ks|ks-arab|ku-arab|ms-arab|mzn|pnb|prd|ps|sd|ug|ur|ydd|yi={{{2|rtl}}}|{{{3|ltr}}}}}<noinclude>{{Documentation}}</noinclude> a65308984923226784ec1a65932f60f03cde075c Template:Str left 10 43 73 72 2024-04-30T01:03:20Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{ {{{|safesubst:}}}padleft:|{{{2|1}}}|{{{1}}}}}</includeonly><noinclude> {{documentation}} </noinclude> 9c0bdb76d3fd64ecd8af888df4ec235e5aec0b33 Template:BCP47 10 44 75 74 2024-04-30T01:03:20Z Axxyyy 2 1 revision imported wikitext text/x-wiki {{#switch:{{lc:{{{1|}}}}} <!-- pseudo codes --> ||root|default|i-default=<!-- empty language tag means unknown per the HTML spec --><!-- or ={{int:lang}}? (the best user default), or =en? (the default "ContentLanguage" for unlocalized data on Meta) --> <!-- current BCP47 violations by Wikimedia sites, which can be fixed using standard tags when they exist --> |als=gsw |bat-smg=sgs |de-formal=de<!-- could be "de-x-formal", but actually a subset within standard "de" for HTML/XML --> |eml=egl<!-- retired code, the de facto eml.wikipedia uses Emilian, not Romagnol --> |fiu-vro=vro |mo=ro-cyrl<!-- retired, best fit on Wikimedia sites, but no longer working in interwikis (Wikipedia project deleted) --> |nl-informal=nl<!-- could be "nl-x-informal", but actually a subset within standard "nl" for HTML/XML --> |nrm=nrf<!-- Wikimedia sites uses "nrm" to mean Norman, but standard "nrm" is an unrelated language. The "nrf" code is now standardized for Norman (previously used a private-use extension of French "fr-x-nrm") --> |roa-rup=rup |simple=en<!-- could be "en-simple" but actually a subset within standard "en" for HTML --> |sr-ec=sr-cyrl |sr-el=sr-latn |zh-classical=lzh <!-- other current BCP47 violations by Wikimedia sites, fixed using private-use extensions (if they are needed, labels are limited to 8 letters/digits) --> |cbk-zam=cbk-x-zam |map-bms=jv-x-bms |roa-tara=it-x-tara |tokipona|tp=x-tokipona <!-- conforming BCP47 "private-use" extensions used by Wikimedia, which are no longer needed, and improved using now standard codes --> |be-x-old=be-tarask <!-- conforming but ambiguous BCP47 codes used by Wikimedia in a more restrictive way, with more precision --> |arc=syc<!-- The de-facto arc.wikipedia.org, as per their community request, is in actual using Syriac which is coded as syc --> |no=nb<!-- "no" means Bokmål on Wikimedia sites, "nb" is not used --> |bh=bho<!-- "bh"="bih" is a language family, interpreted in Wikimedia as the single language "bho", even if its interwiki code remains bh) --> |tgl=tl-tglg<!-- "tgl" on Wikimedia is the historic variant of the Tagalog macrolanguage ("tl" or "tgl", "tl" recommended for BCP47), written in the Baybayin script ("tglg") --> <!-- conforming BCP47 "inherited" tags, strongly discouraged and replaced by their recommended tags (complete list that should not be augmented now) --> |art-lojban=jbo<!-- still used in some old Wikimedia templates --> |en-gb-oed=en-gb<!-- no preferred replacement, could be "en-gb-x-oed" but actually a subset within standard "en-gb" --> |i-ami=ami |i-bnn=bnn |i-hak=hak |i-klingon=tlh |i-lux=lb |i-navajo=nv |i-pwn=pwn |i-tao=tao |i-tay=tay |i-tsu=tstu |no-bok=nb<!-- still used in some old Wikimedia templates --> |no-nyn=nn<!-- still used in some old Wikimedia templates --> |sgn-be-fr=sfb |sgn-be-nl=vgt |sgn-ch-de=sgg |zh-guoyu=cmn<!-- this could be an alias of "zh" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin --> |zh-hakka=hak |zh-min=zh-tw<!-- no preferred replacement, could be "zh-x-min", but actually a subset within standard "zh-tw"; not necessarily "nan" --> |zh-min-nan=nan<!-- used in some old Wikimedia templates and in interwikis --> |zh-xiang=hsn <!-- conforming BCP47 "redundant" tags, discouraged and replaced by their recommended tags (complete list that should not be augmented now) --> |sgn-br=bzs |sgn-co=csn |sgn-de=gsg |sgn-dk=dsl |sgn-es=ssp |sgn-fr=fsl<!-- still used in some old Wikimedia templates --> |sgn-gb=bfi |sgn-gr=gss |sgn-ie=isg |sgn-it=ise |sgn-jp=jsl |sgn-mx=mfs |sgn-ni=ncs |sgn-nl=dse |sgn-no=nsl |sgn-pt=psr |sgn-se=swl |sgn-us=ase<!-- still used in some old Wikimedia templates --> |sgn-za=sfs |zh-cmn=cmn<!-- still used in some old Wikimedia templates, this could be an alias of "zh" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin --> |zh-cmn-Hans=cmn-hans<!-- still used in some old Wikimedia templates, this could be an alias of "zh-hans" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin --> |zh-cmn-Hant=cmn-hant<!-- still used in some old Wikimedia templates, this could be an alias of "zh-hant" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin --> |zh-gan=gan<!-- still used in some old Wikimedia templates --> |zh-wuu=wuu<!-- still used in some old Wikimedia templates --> |zh-yue=yue<!-- still used in some old Wikimedia templates and in interwikis --> <!-- other "inherited" tags of the standard, strongly discouraged as they are deleted, but with no defined replacement there are left unaffected (complete list that should not be augmented now)--> |cel-gaulish=xtg<!--ambiguous, most often "xtg" for Transalpine Gaulish in today's France, may also be "xcg" for Cisalpine Gaulish in today's Northern Italy--> |i-enochian=x-enochian? |i-mingo=x-mingo? <!-- other standard "redundant" tags, which were unnecessarily registered (they validate with standard subtags) and that are left unaffected (complete list that should not be augmented now) |az-arab |az-cyrl |az-latn |be-latn |bs-cyrl |bs-latn |de-1901 |de-1996 |de-at-1901 |de-at-1996 |de-ch-1901 |de-ch-1996 |de-de-1901 |de-de-1996 |en-boont |en-scouse |iu-cans |iu-latn |mn-cyrl |mn-mong |sl-nedis |sl-rozaj |sr-cyrl |sr-latn |tg-arab |tg-cyrl |uz-cyrl |uz-latn |yi-latn |zh-hans |zh-hans-cn |zh-hans-hk |zh-hans-mo |zh-hans-sg |zh-hans-tw |zh-hant |zh-hant-cn |zh-hant-hk |zh-hant-mo |zh-hant-sg |zh-hant-tw --- standard special codes |mul |und --- all other unaffected tags: Minimal check of validity (valid BCP47 codes are necessarily stable over URLENCODE and #titleparts). The check ensures that the code contains only ASCII letters, digits or hyphens, and starts by a letter. This check is necessary to avoid a severe bug in MediaWiki, with some values of parameter 1, notably with urlencoded characters (including quotes, braces, ampersands...), slashes, or any HTML or wiki formatting (see also [[Template:CURRENTCONTENTLANGUAGE]]). If successful, force result to lowercase; otherwise return an empty language tag. --> |#default = {{#ifeq: {{#titleparts:{{{1|}}}|1}} | {{#titleparts:{{{1|}}}||-1}} | {{#ifeq: {{lc:{{#titleparts:{{{1|}}}|1}}}} | {{ucfirst:{{lc:{{#titleparts:{{{1|}}}|1}}}}}} | | {{#ifeq: {{{1|}}} | {{urlencode:{{{1|}}}}} | {{lc:{{{1|}}}}} }} }} }} }}<noinclude>{{Documentation}}</noinclude> c8d624bc6118b4a7d84d16636cf616ce4c2df56f Template:Languages 10 45 77 76 2024-04-30T01:03:20Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{Nmbox|header={{int:tpt-languages-legend}} |text='''[[{{{1|{{NAMESPACE}}:{{BASEPAGENAME}}}}}|English]]'''<!-- For the tested order below, see https://commons.wikimedia.org/wiki/Module_talk:Multilingual_description/sort/testcases -->{{Languages/Lang|sma|{{{1|}}}| }}{{Languages/Lang|ace|{{{1|}}}| }}{{Languages/Lang|ang|{{{1|}}}| }}{{Languages/Lang|af|{{{1|}}}| }}{{Languages/Lang|ak|{{{1|}}}| }}{{Languages/Lang|gsw|{{{1|}}}| }}{{Languages/Lang|als|{{{1|}}}| }}{{Languages/Lang|ase|{{{1|}}}| }}{{Languages/Lang|smn|{{{1|}}}| }}{{Languages/Lang|an|{{{1|}}}| }}{{Languages/Lang|rup|{{{1|}}}| }}{{Languages/Lang|roa-rup|{{{1|}}}| }}{{Languages/Lang|frp|{{{1|}}}| }}{{Languages/Lang|ast|{{{1|}}}| }}{{Languages/Lang|atj|{{{1|}}}| }}{{Languages/Lang|gn|{{{1|}}}| }}{{Languages/Lang|ay|{{{1|}}}| }}{{Languages/Lang|az|{{{1|}}}| }}{{Languages/Lang|abs|{{{1|}}}| }}{{Languages/Lang|gor|{{{1|}}}| }}{{Languages/Lang|id|{{{1|}}}| }}{{Languages/Lang|ms|{{{1|}}}| }}{{Languages/Lang|ban|{{{1|}}}| }}{{Languages/Lang|bm|{{{1|}}}| }}{{Languages/Lang|nan|{{{1|}}}| }}{{Languages/Lang|map-bms|{{{1|}}}| }}{{Languages/Lang|zh-min-nan|{{{1|}}}| }}{{Languages/Lang|bjn|{{{1|}}}| }}{{Languages/Lang|btm|{{{1|}}}| }}{{Languages/Lang|bbc|{{{1|}}}| }}{{Languages/Lang|bbc-latn|{{{1|}}}| }}{{Languages/Lang|sje|{{{1|}}}| }}{{Languages/Lang|bcl|{{{1|}}}| }}{{Languages/Lang|bi|{{{1|}}}| }}{{Languages/Lang|bar|{{{1|}}}| }}{{Languages/Lang|bs|{{{1|}}}| }}{{Languages/Lang|brh|{{{1|}}}| }}{{Languages/Lang|br|{{{1|}}}| }}{{Languages/Lang|en-ca|{{{1|}}}| }}{{Languages/Lang|en-gb|{{{1|}}}| }}{{Languages/Lang|cps|{{{1|}}}| }}{{Languages/Lang|ca|{{{1|}}}| }}{{Languages/Lang|ceb|{{{1|}}}| }}{{Languages/Lang|cs|{{{1|}}}| }}{{Languages/Lang|ch|{{{1|}}}| }}{{Languages/Lang|cbk-zam|{{{1|}}}| }}{{Languages/Lang|ny|{{{1|}}}| }}{{Languages/Lang|sn|{{{1|}}}| }}{{Languages/Lang|tum|{{{1|}}}| }}{{Languages/Lang|cho|{{{1|}}}| }}{{Languages/Lang|sei|{{{1|}}}| }}{{Languages/Lang|co|{{{1|}}}| }}{{Languages/Lang|cy|{{{1|}}}| }}{{Languages/Lang|da|{{{1|}}}| }}{{Languages/Lang|se|{{{1|}}}| }}{{Languages/Lang|pdc|{{{1|}}}| }}{{Languages/Lang|de|{{{1|}}}| }}{{Languages/Lang|de-formal|{{{1|}}}| }}{{Languages/Lang|nv|{{{1|}}}| }}{{Languages/Lang|dsb|{{{1|}}}| }}{{Languages/Lang|na|{{{1|}}}| }}{{Languages/Lang|dtp|{{{1|}}}| }}{{Languages/Lang|mh|{{{1|}}}| }}{{Languages/Lang|et|{{{1|}}}| }}{{Languages/Lang|egl|{{{1|}}}| }}{{Languages/Lang|eml|{{{1|}}}| }}{{Languages/Lang|en|{{{1|}}}| }}{{Languages/Lang|es|{{{1|}}}| }}{{Languages/Lang|es-formal|{{{1|}}}| }}{{Languages/Lang|es-419|{{{1|}}}| }}{{Languages/Lang|eo|{{{1|}}}| }}{{Languages/Lang|ext|{{{1|}}}| }}{{Languages/Lang|eu|{{{1|}}}| }}{{Languages/Lang|ee|{{{1|}}}| }}{{Languages/Lang|hif|{{{1|}}}| }}{{Languages/Lang|hif-latn|{{{1|}}}| }}{{Languages/Lang|fo|{{{1|}}}| }}{{Languages/Lang|fr|{{{1|}}}| }}{{Languages/Lang|frc|{{{1|}}}| }}{{Languages/Lang|fy|{{{1|}}}| }}{{Languages/Lang|ff|{{{1|}}}| }}{{Languages/Lang|fur|{{{1|}}}| }}{{Languages/Lang|gv|{{{1|}}}| }}{{Languages/Lang|ga|{{{1|}}}| }}{{Languages/Lang|sm|{{{1|}}}| }}{{Languages/Lang|gag|{{{1|}}}| }}{{Languages/Lang|gd|{{{1|}}}| }}{{Languages/Lang|gl|{{{1|}}}| }}{{Languages/Lang|aln|{{{1|}}}| }}{{Languages/Lang|ki|{{{1|}}}| }}{{Languages/Lang|gom-latn|{{{1|}}}| }}{{Languages/Lang|ha|{{{1|}}}| }}{{Languages/Lang|haw|{{{1|}}}| }}{{Languages/Lang|ho|{{{1|}}}| }}{{Languages/Lang|hsb|{{{1|}}}| }}{{Languages/Lang|hr|{{{1|}}}| }}{{Languages/Lang|hrx|{{{1|}}}| }}{{Languages/Lang|io|{{{1|}}}| }}{{Languages/Lang|ig|{{{1|}}}| }}{{Languages/Lang|ilo|{{{1|}}}| }}{{Languages/Lang|hil|{{{1|}}}| }}{{Languages/Lang|ia|{{{1|}}}| }}{{Languages/Lang|ie|{{{1|}}}| }}{{Languages/Lang|ike-latn|{{{1|}}}| }}{{Languages/Lang|ik|{{{1|}}}| }}{{Languages/Lang|bto|{{{1|}}}| }}{{Languages/Lang|zu|{{{1|}}}| }}{{Languages/Lang|xh|{{{1|}}}| }}{{Languages/Lang|is|{{{1|}}}| }}{{Languages/Lang|it|{{{1|}}}| }}{{Languages/Lang|jv|{{{1|}}}| }}{{Languages/Lang|rmf|{{{1|}}}| }}{{Languages/Lang|smj|{{{1|}}}| }}{{Languages/Lang|jut|{{{1|}}}| }}{{Languages/Lang|kbp|{{{1|}}}| }}{{Languages/Lang|kea|{{{1|}}}| }}{{Languages/Lang|kl|{{{1|}}}| }}{{Languages/Lang|pam|{{{1|}}}| }}{{Languages/Lang|kr|{{{1|}}}| }}{{Languages/Lang|krl|{{{1|}}}| }}{{Languages/Lang|csb|{{{1|}}}| }}{{Languages/Lang|kw|{{{1|}}}| }}{{Languages/Lang|rw|{{{1|}}}| }}{{Languages/Lang|krj|{{{1|}}}| }}{{Languages/Lang|rn|{{{1|}}}| }}{{Languages/Lang|sw|{{{1|}}}| }}{{Languages/Lang|kiu|{{{1|}}}| }}{{Languages/Lang|kg|{{{1|}}}| }}{{Languages/Lang|avk|{{{1|}}}| }}{{Languages/Lang|ses|{{{1|}}}| }}{{Languages/Lang|ht|{{{1|}}}| }}{{Languages/Lang|kri|{{{1|}}}| }}{{Languages/Lang|gcr|{{{1|}}}| }}{{Languages/Lang|ku|{{{1|}}}| }}{{Languages/Lang|ku-latn|{{{1|}}}| }}{{Languages/Lang|fkv|{{{1|}}}| }}{{Languages/Lang|kj|{{{1|}}}| }}{{Languages/Lang|lad|{{{1|}}}| }}{{Languages/Lang|jbo|{{{1|}}}| }}{{Languages/Lang|lld|{{{1|}}}| }}{{Languages/Lang|ltg|{{{1|}}}| }}{{Languages/Lang|la|{{{1|}}}| }}{{Languages/Lang|lv|{{{1|}}}| }}{{Languages/Lang|lzz|{{{1|}}}| }}{{Languages/Lang|to|{{{1|}}}| }}{{Languages/Lang|lb|{{{1|}}}| }}{{Languages/Lang|nia|{{{1|}}}| }}{{Languages/Lang|lt|{{{1|}}}| }}{{Languages/Lang|lij|{{{1|}}}| }}{{Languages/Lang|li|{{{1|}}}| }}{{Languages/Lang|ln|{{{1|}}}| }}{{Languages/Lang|lfn|{{{1|}}}| }}{{Languages/Lang|liv|{{{1|}}}| }}{{Languages/Lang|olo|{{{1|}}}| }}{{Languages/Lang|lg|{{{1|}}}| }}{{Languages/Lang|lmo|{{{1|}}}| }}{{Languages/Lang|mad|{{{1|}}}| }}{{Languages/Lang|hu|{{{1|}}}| }}{{Languages/Lang|hu-formal|{{{1|}}}| }}{{Languages/Lang|vmf|{{{1|}}}| }}{{Languages/Lang|mg|{{{1|}}}| }}{{Languages/Lang|mt|{{{1|}}}| }}{{Languages/Lang|mi|{{{1|}}}| }}{{Languages/Lang|mrh|{{{1|}}}| }}{{Languages/Lang|srq|{{{1|}}}| }}{{Languages/Lang|arn|{{{1|}}}| }}{{Languages/Lang|fit|{{{1|}}}| }}{{Languages/Lang|min|{{{1|}}}| }}{{Languages/Lang|cdo|{{{1|}}}| }}{{Languages/Lang|mwl|{{{1|}}}| }}{{Languages/Lang|lus|{{{1|}}}| }}{{Languages/Lang|mus|{{{1|}}}| }}{{Languages/Lang|fj|{{{1|}}}| }}{{Languages/Lang|nah|{{{1|}}}| }}{{Languages/Lang|nap|{{{1|}}}| }}{{Languages/Lang|nl|{{{1|}}}| }}{{Languages/Lang|nl-informal|{{{1|}}}| }}{{Languages/Lang|nds-nl|{{{1|}}}| }}{{Languages/Lang|cr|{{{1|}}}| }}{{Languages/Lang|niu|{{{1|}}}| }}{{Languages/Lang|frr|{{{1|}}}| }}{{Languages/Lang|nb|{{{1|}}}| }}{{Languages/Lang|pih|{{{1|}}}| }}{{Languages/Lang|nn|{{{1|}}}| }}{{Languages/Lang|nrm|{{{1|}}}| }}{{Languages/Lang|nov|{{{1|}}}| }}{{Languages/Lang|nys|{{{1|}}}| }}{{Languages/Lang|uz-latn|{{{1|}}}| }}{{Languages/Lang|uz|{{{1|}}}| }}{{Languages/Lang|oc|{{{1|}}}| }}{{Languages/Lang|om|{{{1|}}}| }}{{Languages/Lang|ng|{{{1|}}}| }}{{Languages/Lang|de-at|{{{1|}}}| }}{{Languages/Lang|hz|{{{1|}}}| }}{{Languages/Lang|pfl|{{{1|}}}| }}{{Languages/Lang|pag|{{{1|}}}| }}{{Languages/Lang|ami|{{{1|}}}| }}{{Languages/Lang|pap|{{{1|}}}| }}{{Languages/Lang|pcd|{{{1|}}}| }}{{Languages/Lang|jam|{{{1|}}}| }}{{Languages/Lang|pms|{{{1|}}}| }}{{Languages/Lang|nds|{{{1|}}}| }}{{Languages/Lang|pdt|{{{1|}}}| }}{{Languages/Lang|pl|{{{1|}}}| }}{{Languages/Lang|pt|{{{1|}}}| }}{{Languages/Lang|pt-br|{{{1|}}}| }}{{Languages/Lang|prg|{{{1|}}}| }}{{Languages/Lang|aa|{{{1|}}}| }}{{Languages/Lang|kaa|{{{1|}}}| }}{{Languages/Lang|kk-latn|{{{1|}}}| }}{{Languages/Lang|kk-tr|{{{1|}}}| }}{{Languages/Lang|crh|{{{1|}}}| }}{{Languages/Lang|crh-latn|{{{1|}}}| }}{{Languages/Lang|ty|{{{1|}}}| }}{{Languages/Lang|ksh|{{{1|}}}| }}{{Languages/Lang|rgn|{{{1|}}}| }}{{Languages/Lang|ro|{{{1|}}}| }}{{Languages/Lang|rmy|{{{1|}}}| }}{{Languages/Lang|rm|{{{1|}}}| }}{{Languages/Lang|qug|{{{1|}}}| }}{{Languages/Lang|qu|{{{1|}}}| }}{{Languages/Lang|sms|{{{1|}}}| }}{{Languages/Lang|xsy|{{{1|}}}| }}{{Languages/Lang|szy|{{{1|}}}| }}{{Languages/Lang|sg|{{{1|}}}| }}{{Languages/Lang|sc|{{{1|}}}| }}{{Languages/Lang|sdc|{{{1|}}}| }}{{Languages/Lang|sli|{{{1|}}}| }}{{Languages/Lang|de-ch|{{{1|}}}| }}{{Languages/Lang|sco|{{{1|}}}| }}{{Languages/Lang|trv|{{{1|}}}| }}{{Languages/Lang|stq|{{{1|}}}| }}{{Languages/Lang|st|{{{1|}}}| }}{{Languages/Lang|nso|{{{1|}}}| }}{{Languages/Lang|tn|{{{1|}}}| }}{{Languages/Lang|sq|{{{1|}}}| }}{{Languages/Lang|scn|{{{1|}}}| }}{{Languages/Lang|simple|{{{1|}}}| }}{{Languages/Lang|loz|{{{1|}}}| }}{{Languages/Lang|ss|{{{1|}}}| }}{{Languages/Lang|sk|{{{1|}}}| }}{{Languages/Lang|sl|{{{1|}}}| }}{{Languages/Lang|srn|{{{1|}}}| }}{{Languages/Lang|szl|{{{1|}}}| }}{{Languages/Lang|so|{{{1|}}}| }}{{Languages/Lang|sr-el|{{{1|}}}| }}{{Languages/Lang|sh|{{{1|}}}| }}{{Languages/Lang|su|{{{1|}}}| }}{{Languages/Lang|sv|{{{1|}}}| }}{{Languages/Lang|fi|{{{1|}}}| }}{{Languages/Lang|shy-latn|{{{1|}}}| }}{{Languages/Lang|tl|{{{1|}}}| }}{{Languages/Lang|kab|{{{1|}}}| }}{{Languages/Lang|roa-tara|{{{1|}}}| }}{{Languages/Lang|rif|{{{1|}}}| }}{{Languages/Lang|shi-latn|{{{1|}}}| }}{{Languages/Lang|shi|{{{1|}}}| }}{{Languages/Lang|tt-latn|{{{1|}}}| }}{{Languages/Lang|tay|{{{1|}}}| }}{{Languages/Lang|tet|{{{1|}}}| }}{{Languages/Lang|din|{{{1|}}}| }}{{Languages/Lang|vi|{{{1|}}}| }}{{Languages/Lang|tpi|{{{1|}}}| }}{{Languages/Lang|tg-latn|{{{1|}}}| }}{{Languages/Lang|tly|{{{1|}}}| }}{{Languages/Lang|chy|{{{1|}}}| }}{{Languages/Lang|ve|{{{1|}}}| }}{{Languages/Lang|aeb-latn|{{{1|}}}| }}{{Languages/Lang|tr|{{{1|}}}| }}{{Languages/Lang|tk|{{{1|}}}| }}{{Languages/Lang|tru|{{{1|}}}| }}{{Languages/Lang|tw|{{{1|}}}| }}{{Languages/Lang|sju|{{{1|}}}| }}{{Languages/Lang|ug-latn|{{{1|}}}| }}{{Languages/Lang|vot|{{{1|}}}| }}{{Languages/Lang|za|{{{1|}}}| }}{{Languages/Lang|vec|{{{1|}}}| }}{{Languages/Lang|vep|{{{1|}}}| }}{{Languages/Lang|ruq|{{{1|}}}| }}{{Languages/Lang|ruq-latn|{{{1|}}}| }}{{Languages/Lang|vo|{{{1|}}}| }}{{Languages/Lang|vro|{{{1|}}}| }}{{Languages/Lang|fiu-vro|{{{1|}}}| }}{{Languages/Lang|wa|{{{1|}}}| }}{{Languages/Lang|vls|{{{1|}}}| }}{{Languages/Lang|war|{{{1|}}}| }}{{Languages/Lang|wo|{{{1|}}}| }}{{Languages/Lang|ts|{{{1|}}}| }}{{Languages/Lang|yo|{{{1|}}}| }}{{Languages/Lang|diq|{{{1|}}}| }}{{Languages/Lang|sgs|{{{1|}}}| }}{{Languages/Lang|zea|{{{1|}}}| }}{{Languages/Lang|bat-smg|{{{1|}}}| }}{{Languages/Lang|grc|{{{1|}}}| }}{{Languages/Lang|el|{{{1|}}}| }}{{Languages/Lang|pnt|{{{1|}}}| }}{{Languages/Lang|av|{{{1|}}}| }}{{Languages/Lang|ady|{{{1|}}}| }}{{Languages/Lang|ady-cyrl|{{{1|}}}| }}{{Languages/Lang|kbd-cyrl|{{{1|}}}| }}{{Languages/Lang|kbd|{{{1|}}}| }}{{Languages/Lang|ab|{{{1|}}}| }}{{Languages/Lang|ba|{{{1|}}}| }}{{Languages/Lang|be|{{{1|}}}| }}{{Languages/Lang|be-tarask|{{{1|}}}| }}{{Languages/Lang|be-x-old|{{{1|}}}| }}{{Languages/Lang|bxr|{{{1|}}}| }}{{Languages/Lang|bg|{{{1|}}}| }}{{Languages/Lang|ruq-cyrl|{{{1|}}}| }}{{Languages/Lang|inh|{{{1|}}}| }}{{Languages/Lang|os|{{{1|}}}| }}{{Languages/Lang|sjd|{{{1|}}}| }}{{Languages/Lang|kv|{{{1|}}}| }}{{Languages/Lang|crh-cyrl|{{{1|}}}| }}{{Languages/Lang|krc|{{{1|}}}| }}{{Languages/Lang|kum|{{{1|}}}| }}{{Languages/Lang|ky|{{{1|}}}| }}{{Languages/Lang|mrj|{{{1|}}}| }}{{Languages/Lang|kk|{{{1|}}}| }}{{Languages/Lang|kk-cyrl|{{{1|}}}| }}{{Languages/Lang|kk-kz|{{{1|}}}| }}{{Languages/Lang|lbe|{{{1|}}}| }}{{Languages/Lang|lez|{{{1|}}}| }}{{Languages/Lang|mk|{{{1|}}}| }}{{Languages/Lang|mdf|{{{1|}}}| }}{{Languages/Lang|mo|{{{1|}}}| }}{{Languages/Lang|mn|{{{1|}}}| }}{{Languages/Lang|mhr|{{{1|}}}| }}{{Languages/Lang|ce|{{{1|}}}| }}{{Languages/Lang|koi|{{{1|}}}| }}{{Languages/Lang|rue|{{{1|}}}| }}{{Languages/Lang|ru|{{{1|}}}| }}{{Languages/Lang|sah|{{{1|}}}| }}{{Languages/Lang|sty|{{{1|}}}| }}{{Languages/Lang|cu|{{{1|}}}| }}{{Languages/Lang|sr-ec|{{{1|}}}| }}{{Languages/Lang|sr|{{{1|}}}| }}{{Languages/Lang|tt-cyrl|{{{1|}}}| }}{{Languages/Lang|tt|{{{1|}}}| }}{{Languages/Lang|tly|{{{1|}}}| }}{{Languages/Lang|tg-cyrl|{{{1|}}}| }}{{Languages/Lang|tg|{{{1|}}}| }}{{Languages/Lang|alt|{{{1|}}}| }}{{Languages/Lang|tyv|{{{1|}}}| }}{{Languages/Lang|udm|{{{1|}}}| }}{{Languages/Lang|uz-cyrl|{{{1|}}}| }}{{Languages/Lang|uk|{{{1|}}}| }}{{Languages/Lang|xal|{{{1|}}}| }}{{Languages/Lang|cv|{{{1|}}}| }}{{Languages/Lang|myv|{{{1|}}}| }}{{Languages/Lang|xmf|{{{1|}}}| }}{{Languages/Lang|ka|{{{1|}}}| }}{{Languages/Lang|hyw|{{{1|}}}| }}{{Languages/Lang|hy|{{{1|}}}| }}{{Languages/Lang|anp|{{{1|}}}| }}{{Languages/Lang|awa|{{{1|}}}| }}{{Languages/Lang|ks-deva|{{{1|}}}| }}{{Languages/Lang|ks|{{{1|}}}| }}{{Languages/Lang|gom-deva|{{{1|}}}| }}{{Languages/Lang|gom|{{{1|}}}| }}{{Languages/Lang|dty|{{{1|}}}| }}{{Languages/Lang|new|{{{1|}}}| }}{{Languages/Lang|ne|{{{1|}}}| }}{{Languages/Lang|pi|{{{1|}}}| }}{{Languages/Lang|bho|{{{1|}}}| }}{{Languages/Lang|bh|{{{1|}}}| }}{{Languages/Lang|mr|{{{1|}}}| }}{{Languages/Lang|rwr|{{{1|}}}| }}{{Languages/Lang|mai|{{{1|}}}| }}{{Languages/Lang|sa|{{{1|}}}| }}{{Languages/Lang|hi|{{{1|}}}| }}{{Languages/Lang|as|{{{1|}}}| }}{{Languages/Lang|bn|{{{1|}}}| }}{{Languages/Lang|bpy|{{{1|}}}| }}{{Languages/Lang|pa|{{{1|}}}| }}{{Languages/Lang|or|{{{1|}}}| }}{{Languages/Lang|gu|{{{1|}}}| }}{{Languages/Lang|ta|{{{1|}}}| }}{{Languages/Lang|te|{{{1|}}}| }}{{Languages/Lang|kn|{{{1|}}}| }}{{Languages/Lang|tcy|{{{1|}}}| }}{{Languages/Lang|ml|{{{1|}}}| }}{{Languages/Lang|si|{{{1|}}}| }}{{Languages/Lang|mni|{{{1|}}}| }}{{Languages/Lang|th|{{{1|}}}| }}{{Languages/Lang|lo|{{{1|}}}| }}{{Languages/Lang|dz|{{{1|}}}| }}{{Languages/Lang|bo|{{{1|}}}| }}{{Languages/Lang|kjp|{{{1|}}}| }}{{Languages/Lang|bug|{{{1|}}}| }}{{Languages/Lang|shn|{{{1|}}}| }}{{Languages/Lang|mnw|{{{1|}}}| }}{{Languages/Lang|my|{{{1|}}}| }}{{Languages/Lang|km|{{{1|}}}| }}{{Languages/Lang|nod|{{{1|}}}| }}{{Languages/Lang|ban-bali|{{{1|}}}| }}{{Languages/Lang|sat|{{{1|}}}| }}{{Languages/Lang|chr|{{{1|}}}| }}{{Languages/Lang|ike-cans|{{{1|}}}| }}{{Languages/Lang|iu|{{{1|}}}| }}{{Languages/Lang|got|{{{1|}}}| }}{{Languages/Lang|tzm|{{{1|}}}| }}{{Languages/Lang|zgh|{{{1|}}}| }}{{Languages/Lang|shi-tfng|{{{1|}}}| }}{{Languages/Lang|ti|{{{1|}}}| }}{{Languages/Lang|am|{{{1|}}}| }}{{Languages/Lang|ii|{{{1|}}}| }}{{Languages/Lang|ko-kp|{{{1|}}}| }}{{Languages/Lang|ko|{{{1|}}}| }}{{Languages/Lang|ja|{{{1|}}}| }}{{Languages/Lang|zh|{{{1|}}}| }}{{Languages/Lang|zh-tw|{{{1|}}}| }}{{Languages/Lang|zh-cn|{{{1|}}}| }}{{Languages/Lang|zh-sg|{{{1|}}}| }}{{Languages/Lang|zh-mo|{{{1|}}}| }}{{Languages/Lang|zh-hans|{{{1|}}}| }}{{Languages/Lang|zh-hant|{{{1|}}}| }}{{Languages/Lang|zh-hk|{{{1|}}}| }}{{Languages/Lang|zh-my|{{{1|}}}| }}{{Languages/Lang|wuu|{{{1|}}}| }}{{Languages/Lang|hak|{{{1|}}}| }}{{Languages/Lang|lzh|{{{1|}}}| }}{{Languages/Lang|zh-classical|{{{1|}}}| }}{{Languages/Lang|zh-yue|{{{1|}}}| }}{{Languages/Lang|yue|{{{1|}}}| }}{{Languages/Lang|gan|{{{1|}}}| }}{{Languages/Lang|gan-hant|{{{1|}}}| }}{{Languages/Lang|gan-hans|{{{1|}}}| }}{{Languages/Lang|yi|{{{1|}}}| }}{{Languages/Lang|he|{{{1|}}}| }}{{Languages/Lang|ug-arab|{{{1|}}}| }}{{Languages/Lang|ar|{{{1|}}}| }}{{Languages/Lang|ug|{{{1|}}}| }}{{Languages/Lang|ur|{{{1|}}}| }}{{Languages/Lang|ary|{{{1|}}}| }}{{Languages/Lang|bqi|{{{1|}}}| }}{{Languages/Lang|ps|{{{1|}}}| }}{{Languages/Lang|pnb|{{{1|}}}| }}{{Languages/Lang|aeb-arab|{{{1|}}}| }}{{Languages/Lang|aeb|{{{1|}}}| }}{{Languages/Lang|azb|{{{1|}}}| }}{{Languages/Lang|arq|{{{1|}}}| }}{{Languages/Lang|sd|{{{1|}}}| }}{{Languages/Lang|bcc|{{{1|}}}| }}{{Languages/Lang|bgn|{{{1|}}}| }}{{Languages/Lang|skr-arab|{{{1|}}}| }}{{Languages/Lang|skr|{{{1|}}}| }}{{Languages/Lang|fa|{{{1|}}}| }}{{Languages/Lang|kk-arab|{{{1|}}}| }}{{Languages/Lang|kk-cn|{{{1|}}}| }}{{Languages/Lang|ku-arab|{{{1|}}}| }}{{Languages/Lang|ks-arab|{{{1|}}}| }}{{Languages/Lang|khw|{{{1|}}}| }}{{Languages/Lang|ckb|{{{1|}}}| }}{{Languages/Lang|sdh|{{{1|}}}| }}{{Languages/Lang|glk|{{{1|}}}| }}{{Languages/Lang|luz|{{{1|}}}| }}{{Languages/Lang|ota|{{{1|}}}| }}{{Languages/Lang|lki|{{{1|}}}| }}{{Languages/Lang|lrc|{{{1|}}}| }}{{Languages/Lang|mzn|{{{1|}}}| }}{{Languages/Lang|arz|{{{1|}}}| }}{{Languages/Lang|arc|{{{1|}}}| }}{{Languages/Lang|dv|{{{1|}}}| }}{{Languages/Lang|nqo|{{{1|}}}| clear={{{clear|both}}}}}}}</includeonly><noinclude> {{Documentation}} [[Category:Language link templates| ]] [[Category:Translation]] </noinclude> 28e85d00580c67cc8d5aa506aab59e2ef082c90d Template:Nmbox 10 46 79 78 2024-04-30T01:03:21Z Axxyyy 2 1 revision imported wikitext text/x-wiki <templatestyles src="Template:Nmbox/styles.css" /> <div class="nmbox noprint">{{#if: {{{image|}}}{{{header|}}} |<div class="nmbox-header">{{#if: {{{image|}}}|<div class="nmbox-image">{{{image|}}}</div>}}{{{header|}}} </div>}} {{#if:{{{text|}}}|<div class="nmbox-text">{{{text|}}}</div>}} </div><noinclude>{{documentation}}</noinclude> e557c052be3962967d3c2ad6a2f5a99a2ca4a8a4 Template:Nmbox/styles.css 10 47 81 80 2024-04-30T01:03:21Z Axxyyy 2 1 revision imported text text/plain .nmbox { clear: both; background: #F6F9ED; border: 1px solid #AAA; box-sizing: border-box; margin: 2px 0; padding: 0; } .nmbox * { box-sizing: border-box; } .nmbox-header { background: #EEF3E2; padding: 4px 0.5em; font-weight: bold; text-align: center; white-space: nowrap } .nmbox-image { display: inline-block; } .nmbox-text { border-top: 1px solid #AAA; width: 100%; padding: 4px 0.5em; } @media screen and (min-width: 768px) { .nmbox-header { display: table-cell; border-right: 1px solid #AAA; width: 1%; } .nmbox-text { border-top: none; display: table-cell; } } 24c6a01b07b9d9cf44e7f110e8173db233e986e8 Template:Languages/Lang 10 48 83 82 2024-04-30T01:03:21Z Axxyyy 2 1 revision imported wikitext text/x-wiki {{#if: {{{1|}}} | {{#if: {{#if: {{{all|}}} | 1 | {{#ifexist: {{#if: {{{2|}}} | {{{2|}}} | {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}} }}/{{{1|}}} | 1 }} }} | &nbsp;'''·''' <span lang="{{#if:{{{name|}}}|en|{{BCP47|{{Uselang}}}}}}" title="{{{name|{{#language:{{{1|}}}|{{Uselang}}}}}}} ({{{1}}})"><bdi lang="{{BCP47|{{{1}}}}}" dir="{{Dir|{{{1}}}}}" class="plainlinks autonym" style="white-space:nowrap">{{#ifeq: {{#if: {{{2|}}} | {{{2|}}} | {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}} }}/{{{1|}}} | {{FULLPAGENAME}} | [[:{{FULLPAGENAME}}|{{{autonym|{{#language:{{{1|}}}}}}}}]]<!-- selflink --> | [{{FULLURL:{{#if: {{{2|}}} | {{{2|}}} | {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}} }}/{{{1|}}}|uselang={{{1|}}}}} {{{autonym|{{#language:{{{1|}}}}}}}}]<!-- real link, set interface to be in the language of the page --> }}</bdi></span> }} }}<noinclude>{{Documentation}}</noinclude> 844f59be1b2e87d8921f28439ccadfaffe35a6e6 Template:Documentation subpage 10 49 85 84 2024-04-30T01:03:22Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}} | <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show | {{Ombox|type=notice|image=[[File:Edit-copy green.svg|40px|link=]] |text='''This is a [[Help:Template documentation|documentation]] [[mw:Help:Subpages|subpage]] for {{#if:{{{1|}}} | {{{1}}} | [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]] }}.'''<br/> It contains usage information, [[Categorization|categories]], and other content that is not part of the original<!-- --> {{#if: {{{text2|}}} | {{{text2|}}} | {{#if: {{{text1|}}} | {{{text1|}}} | {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}} | {{lc:{{SUBJECTSPACE}}}} template page | {{#if: {{SUBJECTSPACE}} | {{lc:{{SUBJECTSPACE}}}} page | article }} }} }} }}. }} <!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}} | <!--Skip--> | <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch: {{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Template }} documentation pages{{#translation:}}]] | [[Category:Documentation subpages without corresponding pages{{#translation:}}]] }}</includeonly> }}<includeonly> }}</includeonly><noinclude>{{Documentation}}<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude> a5300bf1d640c82dada9be2a2b099a0d7b76f123 Template:IsDocSubpage 10 50 87 86 2024-04-30T01:03:22Z Axxyyy 2 1 revision imported wikitext text/x-wiki <onlyinclude><includeonly>{{#ifexpr: ( {{#ifeq:{{lc:{{SUBPAGENAME}}}}|{{lc:{{{override|doc}}}}}|1|0}} or ( {{#ifeq:{{lc:{{#titleparts:{{FULLPAGENAME}}|-1|-2}}}}|{{lc:{{{override|doc}}}}}|1|0}} and {{#if:{{#invoke:Template translation|getLanguageSubpage}}|1|0}} ) )<!-- -->|{{{true|1}}}<!-- -->|{{{false|}}}<!-- -->}}</includeonly></onlyinclude> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! --> e60f69b26953d441bf5b76229c9222f16c042ae6 Template:Sandbox other 10 51 89 88 2024-04-30T01:03:23Z Axxyyy 2 1 revision imported wikitext text/x-wiki <!-- -->{{#if:<!-- -->{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}<!-- -->|sandbox<!-- -->|1<!-- -->}}<!-- -->{{#ifeq:{{SUBPAGENAME}}|doc<!-- -->|1<!-- -->}}<!-- -->{{#invoke:String|match<!-- -->|{{PAGENAME}}<!-- -->|/sandbox/styles.css$<!-- -->|plain = false<!-- -->|nomatch = <!-- -->}}<!-- -->|{{{1|}}}<!-- -->|{{{2|}}}<!-- -->}}<!-- --><noinclude> {{documentation}} </noinclude> 10ab2a8619ffe82e75daf68783e80852419e186a Template:Int Usage 10 52 91 90 2024-04-30T01:03:23Z Axxyyy 2 1 revision imported wikitext text/x-wiki {{TranslateThis|source = Template:Int Usage |ha = Amfani |sv = Användning |ay = Apnaqaña |kri = Aw fɔ yuz am |bm = Baarakɛcogo |lb = Benotzung |ku = Bikaranîn |da = Brug |nb,nn,no = Bruk |gd = Cleachdadh |cy = Defnydd |lg = Enkozesa |eu = Erabilera |sm = Fa’aoga |mg = Fampiasana |om = Fayyadama |uz = Foydalanish |af,li,nl,nl-be,nl-informal,vl,zea = Gebruik |fy = Gebrûk |hu = Használat |bar = Heagnomma |lus = Hman dan |haw = Hoʻohana |rw = Ikoreshwa |so = Isticmaalka |az = İstifadə |ht = Itilizasyon |gn = Jeporu rehegua |et = Kasutamine |fi = Käyttö |hmn = Kev siv |bs,cnr,hr,sh,sh-el,sh-latn,sr-el = Korištenje |ln = Kosalela yango |ny = Kugwiritsa ntchito |diq = Kullanım|tr = Kullanım |sn = Kushandiswa |lt = Lietošana |yo = Lilo |ts = Matirhiselo |sw = Matumizi |lv = Naudojimas |is = Notkun |ig = Ojiji |ceb,fil,tl = Paggamit |su = Pamakéan |ilo = Panagusar |jv = Panggunaan |id,ms = Penggunaan |sk = Použitie |cs = Používání |ak,tw = Sɛnea wɔde di dwuma |vi = Sử dụng |st = Tšebeliso |nso = Tšhomišo |zu = Ukusetshenziswa |xh = Ukusetyenziswa |tk = Ulanylyşy |sl = Uporaba |en,en-au,en-ca,en-gb,en-ie,en-in,en-nz,en-us = Usage |ga = Úsáid |es,es-419,gl,pt,pt-br,pt-pt,qu = Uso |co = Usu |la = Ut uti |fr,fr-be,fr-ca,fr-ch,fr-fr,fr-lu,frc = Utilisation |ca = Utilització |ro = Utilizare |it = Utilizzo |eo = Uzado |mt = Użu |pl = Użycie |als,de,de-formal,de-at,de-ch,de-de,gsw = Verwendung |mi = Whakamahinga |ee = Zazã |el = Χρήση|pnt = Χρήση |be = Выкарыстанне |be-tarask = Выкарыстаньне |uk = Використання |ru = Использование |tg = Истифода |kk = Қолданылуы |ky = Колдонылышы |tt = Куллану |sh-cyrl,sh-ec,sr,sr-cyrl,sr-ec = Коришћење |bg = Употреба|mk = Употреба |mn = Хэрэглээ |hy,hyw = օգտագործումը |ka,xmf = გამოყენება |as = ব্যৱহাৰ |bn = ব্যবহার |doi = प्रयोग करना |bh,bho = प्रयोग के बारे में बतावल गइल बा |hi,mai,ne = प्रयोग |sa = प्रयोगः |mr = वापर |pa = ਵਰਤੋਂ |or = ବ୍ୟବହାର |ml = ഉപയോഗം |gu = ઉપયોગ |kn = ಬಳಕೆ |ta = பயன்பாடு |te = వాడుక |si = භාවිතය |my = အသုံးပြုပုံ |th = การใช้งาน |km = ការប្រើប្រាស់ |lo = ການນຳໃຊ້ |mni = ꯁꯤꯖꯤꯟꯅꯕꯥ |am = አጠቃቀም |ti = ኣጠቓቕማ |ko = 사용법 |ja = 使い方<!--or 使用法--> |yue,zh,zh-cn,zh-hans,zh-hant,zh-hk,zh-mo,zh-sg,zh-tw = 用法 |he = שימוש |yi = באַניץ |ar,ary,arz = استخدام |sd,ur = استعمال |uy = ئىشلىتىلىشى |ckb = بەکارهێنان |fa = کاربرد |ps = کارول |dv = ބޭނުން ކުރުމެވެ }}<noinclude>{{doc}}</noinclude> 8daedbcbcd7444e04c6824104aa49074edba81d6 Template:TranslateThis 10 53 93 92 2024-04-30T01:03:23Z Axxyyy 2 1 revision imported wikitext text/x-wiki <includeonly>{{#invoke:TranslateThis|main}}</includeonly><noinclude>{{documentation}}</noinclude> ec67859e2d049878c88308d50739380e842ceb87 Template:Translation category/doc 10 54 95 94 2024-04-30T01:03:24Z Axxyyy 2 1 revision imported wikitext text/x-wiki {{Documentation subpage}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --> == {{int Usage}} == Should be included alone on /Translations subpage of each translatable category. If Category:Foo has been [[Meta:Internationalization guidelines|internationalized with Translate syntax]], Category:Foo/Translations should only contain {{tlx|Translation category}}. == Purpose == Placed at ''Category:Foo/Translations'', this template will: * Display a language bar to navigate to translations (Category:Foo/en, Category:Foo/pt, …). * Display Category:Foo description. * Categorize inside ''/Translations'' subcategory of each category in which Category:Foo is categorized (i.e. if Category:Foo is categorized in Category:Bar, Category:Foo/Translations will be categorized in Category:Bar/Translations). * Categorize inside ''Category:Foo'', indexed as “/Translations” (<code><nowiki>[[Category:Foo|/Translations]]}}</nowiki></code>). <includeonly>{{Sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Internationalization templates]] }}</includeonly> 1f8927c0cf99d11ce8f95176ae5177ca082f503a Template:CfF Community Board Seats 10 55 97 96 2024-04-30T01:03:25Z Axxyyy 2 1 revision imported wikitext text/x-wiki <languages/> <translate> <!--T:1--> Pages related to [[<tvar name="1">Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Community Board seats</tvar>|the 2021 call for feedback about community seats]] in the Board of Trustees of Wikimedia Foundation. </translate> {{#if:{{#translation:}}|[[Category:CfF Community Board Seats/Translations|{{#translation:}}]]}} [[Category:Wikimedia Foundation Board of Trustees{{#translation:}}]] 2ec7de376b07fd269d635bb215a499a1fed5c578 Template:CfF Community Board Seats/en 10 56 99 98 2024-04-30T01:03:25Z Axxyyy 2 1 revision imported wikitext text/x-wiki <languages/> Pages related to [[Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Community Board seats|the 2021 call for feedback about community seats]] in the Board of Trustees of Wikimedia Foundation. {{#if:{{#translation:}}|[[Category:CfF Community Board Seats/Translations|{{#translation:}}]]}} [[Category:Wikimedia Foundation Board of Trustees{{#translation:}}]] 9b9f881d7e406778a4a1d41dc975e333ff2dc925 File:Module-Crafting.lua 6 57 100 2024-04-30T20:39:16Z Axxyyy 2 Crafting module wikitext text/x-wiki == Summary == Crafting module 3b32f7ef8bb9b343dc17cdeeca92e82d4a98d8bb File:Module-Recipe table.lua 6 58 101 2024-04-30T20:39:50Z Axxyyy 2 Recipe table module wikitext text/x-wiki == Summary == Recipe table module 5fe4c551b6d951ba26db8f2258677ca72bb008ff File:Module-Inventory slot.lua 6 59 102 2024-04-30T20:42:15Z Axxyyy 2 Inventory slot module wikitext text/x-wiki == Summary == Inventory slot module 18396ab2331be608c070519dff96452f3d097edf File:Module-ProcessArgs.lua 6 60 103 2024-04-30T20:42:49Z Axxyyy 2 ProcessArgs module wikitext text/x-wiki == Summary == ProcessArgs module 4bf5bed0992daba6e4c4a6f5c7785c4751361d9d File:Module-Grid.lua 6 61 104 2024-04-30T20:46:53Z Axxyyy 2 Grid module wikitext text/x-wiki == Summary == Grid module 9054747fd972275b55e1a3903edfb295b858fd0d File:Module-Sprite.lua 6 62 105 2024-04-30T21:27:02Z Axxyyy 2 Sprite module wikitext text/x-wiki == Summary == Sprite module d82d4d4269f3a96951c004bfe7e0d0ad54170708 File:Module-UI.lua 6 63 106 2024-04-30T21:31:08Z Axxyyy 2 UI module wikitext text/x-wiki == Summary == UI module 9e6cdbdba096159b927cae54da81f64c1f7fab5d Module:Crafting 828 64 107 2024-05-01T14:26:04Z Axxyyy 2 Created page with "local p = {} local i18n = { colored = 'Colored', coloredDyes = { 'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Dandelion Yellow', 'Lime Dye', 'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye', 'Lapis Lazuli', 'Cocoa Beans', 'Cactus Green', 'Rose Red', 'Ink Sac', }, categoryIngredientUsage = 'Category:Recipe using $1', categoryRecipeType = 'Category:$1 recipe', categoryUpcoming = 'Category:Upcoming', itemBlockOfQuartz = 'Block of Quartz',..." Scribunto text/plain local p = {} local i18n = { colored = 'Colored', coloredDyes = { 'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Dandelion Yellow', 'Lime Dye', 'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye', 'Lapis Lazuli', 'Cocoa Beans', 'Cactus Green', 'Rose Red', 'Ink Sac', }, categoryIngredientUsage = 'Category:Recipe using $1', categoryRecipeType = 'Category:$1 recipe', categoryUpcoming = 'Category:Upcoming', itemBlockOfQuartz = 'Block of Quartz', itemBoneMeal = 'Bone Meal', itemBrownMushroom = 'Brown Mushroom', itemCharcoal = 'Charcoal', itemCoal = 'Coal', itemColoredDye = 'Colored Dye', itemDye = 'Dye', itemMushroom = 'Mushroom', itemQuartzBlock = 'Quartz Block', itemRedMushroom = 'Red Mushroom', itemStone = 'Stone', moduleArgs = [[Module:ProcessArgs]], moduleRecipe = [[Module:Recipe table]], moduleSlot = [[Module:Inventory slot]], stoneVariants = { 'Stone', 'Andesite', 'Granite', 'Diorite' }, type = 'Crafting', variantPages = { 'Andesite', 'Banner', 'Bed', 'Diorite', 'Firework Star', 'Granite', 'Pressure Plate', 'Sand', 'Sandstone', 'Shield', 'Slab', 'Stained Glass Pane', 'Stained Glass', 'Stairs', 'Stone Bricks', 'Wood Planks', 'Wood', 'Wool', }, } p.i18n = i18n local slot = require( i18n.moduleSlot ) local recipeTable = require( i18n.moduleRecipe ).table local cArgVals = { 'A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3' } p.cArgVals = cArgVals function p.table( f ) local args = f if f == mw.getCurrentFrame() then args = require( i18n.moduleArgs ).merge( true ) else f = mw.getCurrentFrame() end -- Automatic shapeless positioning if args[1] then args.shapeless = 1 if args[7] then args.A1 = args[1] args.B1 = args[2] args.C1 = args[3] args.A2 = args[4] args.B2 = args[5] args.C2 = args[6] if args[8] then -- ◼◼◼ ◼◼◼ -- ◼◼◼ OR ◼◼◼ -- ◼◼◼ ◼◼◻ args.A3 = args[7] args.B3 = args[8] args.C3 = args[9] if args[9] then local identical = true for i = 1, 8 do if args[i] ~= args[i + 1] then identical = false break end end if identical then args.shapeless = nil end end else -- ◼◼◼ -- ◼◼◼ -- ◻◼◻ args.B3 = args[7] end elseif args[2] then args.A2 = args[1] args.B2 = args[2] if args[5] then -- ◻◻◻ ◻◻◻ -- ◼◼◼ OR ◼◼◼ -- ◼◼◼ ◼◼◻ args.C2 = args[3] args.A3 = args[4] args.B3 = args[5] args.C3 = args[6] elseif args[4] then -- ◻◻◻ -- ◼◼◻ -- ◼◼◻ args.A3 = args[3] args.B3 = args[4] else -- ◻◻◻ ◻◻◻ -- ◼◼◻ OR ◼◼◻ -- ◻◼◻ ◻◻◻ args.B3 = args[3] end else -- ◻◻◻ -- ◻◼◻ -- ◻◻◻ args.B2 = args[1] args.shapeless = nil end for i = 1, 9 do args[i] = nil end end -- Create recipe table, and list of ingredients local out, ingredientSets = recipeTable( args, { uiFunc = 'craftingTable', type = i18n.type, ingredientArgs = cArgVals, outputArgs = { 'Output' }, } ) local title = mw.title.getCurrentTitle() if args.nocat == '1' or title.namespace ~= 0 or title.isSubpage then return out end local categories = {} local cI = 1 if args.upcoming then categories[cI] = '[[' .. i18n.categoryUpcoming .. ']]' cI = cI + 1 end if args.type then categories[cI] = '[[' .. i18n.categoryRecipeType:gsub( '%$1', args.type ) .. ']]' cI = cI + 1 end if args.ignoreusage ~= '1' then -- Create ingredient categories for DPL local usedNames = {} for _, ingredientSet in pairs( ingredientSets ) do for _, ingredient in pairs( ingredientSet ) do local name = ingredient.name if not ingredient.mod and not usedNames[name] and name ~= title.text then -- List each dye individually as they have their own pages if name == slot.i18n.prefixes.any .. ' ' .. i18n.itemDye or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemDye or name == slot.i18n.prefixes.any .. ' ' .. i18n.itemColoredDye or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemColoredDye then if not name:find( i18n.colored ) then categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', i18n.itemBoneMeal ) .. ']]' cI = cI + 1 usedNames[i18n.itemBoneMeal] = true end for _, dye in pairs( i18n.coloredDyes ) do categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', dye ) .. ']]' cI = cI + 1 usedNames[dye] = true end -- List stone variants individually as they have their own pages elseif name == slot.i18n.prefixes.any .. ' ' .. i18n.itemStone or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemStone then for _, stone in pairs( i18n.stoneVariants ) do categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', stone ) .. ']]' cI = cI + 1 usedNames[stone] = true end else -- Merge item variants which use a single page if name == slot.i18n.prefixes.any .. ' ' .. i18n.itemMushroom or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemMushroom or name == i18n.itemRedMushroom or name == i18n.itemBrownMushroom then name = i18n.itemMushroom elseif name == i18n.itemCharcoal then name = i18n.itemCoal elseif name:find( ' ' .. i18n.itemQuartzBlock .. '$' ) then name = i18n.itemBlockOfQuartz else for _, variant in pairs( i18n.variantPages ) do if name:find( ' ' .. variant .. '$' ) then name = variant break end end -- Remove prefixes for _, prefix in pairs( slot.i18n.prefixes ) do if name:find( '^' .. prefix .. ' ' ) then name = name:gsub( '^' .. prefix .. ' ', '' ) break end end end if not usedNames[name] then categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', name ) .. ']]' cI = cI + 1 usedNames[name] = true end end end end end end return out, table.concat( categories, '' ) end return p ac086ea676edeb0c5df6f89488b0b33c9cf3cded Module:Recipe table 828 65 108 2024-05-01T14:32:19Z Axxyyy 2 Created page with "local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = [[Module:Inventory slot]], moduleUi = [[Module:UI]], separator = '&nbsp;+', setSeparator = '&nbsp;or', tableDescription = '$1 recipes', } local slot = require( i18n.moduleSlot ) local prefixes = slot.i18n.prefixes --[[Merges a list, or inserts a string or table into a table --]] local function merg..." Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = [[Module:Inventory slot]], moduleUi = [[Module:UI]], separator = '&nbsp;+', setSeparator = '&nbsp;or', tableDescription = '$1 recipes', } local slot = require( i18n.moduleSlot ) local prefixes = slot.i18n.prefixes --[[Merges a list, or inserts a string or table into a table --]] local function mergeList( parentTable, content ) local i = #parentTable + 1 if content[1] then -- Merge list into table for _, v in ipairs( content ) do parentTable[i] = v i = i + 1 end else -- Add strings or tables to table parentTable[i] = content end end --[[Loops through the input and output args and parses them into a single table, with alias reference data Identical slots reuse the same table, to allow them to be compared like strings --]] local function parseRecipeArgs( args, ingredientArgVals, outputArgs ) local recipeArgs = {} for _, arg in pairs( ingredientArgVals ) do recipeArgs[arg] = args[arg] end for _, arg in pairs( outputArgs ) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs( recipeArgs ) do if frameText then local randomise for _, oArg in pairs( outputArgs ) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText( frameText, randomise, true ) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end --[[Creates a link (with mod name if specified) with any prefix moved outside --]] function m.prefixedLink( name, mod ) local prefix = '' for _, thisPrefix in pairs( prefixes ) do if name:find( '^' .. thisPrefix .. ' ' ) then prefix = thisPrefix .. ' ' name = name:sub( #prefix + 1 ) break end end local page = name if mod then page = slot.i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name ) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end --[[Creates sets of unique items from a set of slots, using the original alias name if available Each set of items are the frames of that slot --]] function m.makeItemSets( argVals, parsedArgs ) local usedItems = {} local function addItem( items, arg, frame, alias ) if alias then frame = alias.frame end local uniqName = ( frame.mod or '' ) .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs( argVals ) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem( items, arg, subframe, alias ) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem( items, arg, frame, alias ) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end --[[Creates links for the name/ingredients columns out of item sets, with the appropriate separators, and optionally "Any" and "Matching" prefixes removed. --]] function m.makeItemLinks( itemSets, removePrefixes ) local links = {} for i, itemSet in ipairs( itemSets ) do local linkSet = {} for i2, item in ipairs( itemSet ) do local name = item.name if removePrefixes then -- Remove prefixes and uppercase first letter name = name :gsub( '^' .. prefixes.any .. ' ', '' ) :gsub( '^' .. prefixes.matching .. ' ', '' ) :gsub( '^%l', string.upper ) end linkSet[i2] = m.prefixedLink( name, item.mod ) end links[i] = table.concat( linkSet, i18n.setSeparator .. '<br>' ) end return table.concat( links, i18n.separator .. '<br>' ) end -- Creates the table header function m.makeHeader( recipeType, class, showName, showDescription, multirow ) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = 'class="unsortable"|' end local header = table.concat( { ' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub( '%$1', recipeType ) .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. i18n.headingRecipe:gsub( '%$1', recipeType ) .. descriptionCell }, '\n' ) return header end -- Create the contents for the name cell function m.makeNameCell( name, outputArgs, parsedRecipeArgs, upcoming ) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks( m.makeItemSets( outputArgs, parsedRecipeArgs ), true ) end if upcoming then if upcoming:find( '%[%[' ) then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat( cell, '<br>' ) end -- Create the contents for the ingredients cell function m.makeIngredientsCell( ingredients, itemSets ) return ingredients or m.makeItemLinks( itemSets ) end --[[Main entry point, creates the table with the relevant DPL vars to allow multiple table rows from separate template calls Also returns the unique ingredients, for categorisation purposes in Module:Crafting --]] function m.table( args, settings ) local f = mw.getCurrentFrame() local multirow = f:callParserFunction( '#dplvar', 'recipetable-multirow' ) if multirow == '' then multirow = nil end local showHead = args.head local showFoot = args.foot if multirow then showHead = nil elseif showHead and not showFoot then multirow = true f:callParserFunction( '#dplvar:set', 'recipetable-multirow', '1' ) else showHead = true showFoot = true end local showName = args.showname local showDescription = args.showdescription if multirow then if showHead then showName = args.showname or '1' f:callParserFunction( '#dplvar:set', 'recipetable-name', showName, 'recipetable-description', showDescription ) else showName = f:callParserFunction( '#dplvar', 'recipetable-name' ) showDescription = f:callParserFunction( '#dplvar', 'recipetable-description' ) end end if showName ~= '1' then showName = nil end if showDescription == '' then showDescription = nil end local out = {} if showHead then out[1] = m.makeHeader( settings.type, args.class, showName, showDescription, multirow ) end local ingredientArgVals = settings.ingredientArgs local outputArgs = settings.outputArgs local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs( args, ingredientArgVals, outputArgs ) end local cells = {} if showName then cells[1] = '!' .. m.makeNameCell( args.name, outputArgs, parsedRecipeArgs, args.upcoming ) end local ingredientsItemSets = m.makeItemSets( ingredientArgVals, parsedRecipeArgs ) cells[#cells + 1] = '|' .. m.makeIngredientsCell( args.ingredients, ingredientsItemSets ) cells[#cells + 1] = '|style="padding:1px"|' .. require( i18n.moduleUi )[settings.uiFunc]( args ) if showDescription then cells[#cells + 1] = '|' .. ( args.description or '' ) end out[#out + 1] = table.concat( cells, '\n' ) out[#out + 1] = showFoot and '|}' or '' if showFoot then f:callParserFunction( '#dplvar:set', 'recipetable-multirow', '', 'recipetable-name', '', 'recipetable-description', '' ) end return table.concat( out, '\n|-\n' ), ingredientsItemSets end return m 20dd66cae4722d0b20bc83f73a7df89df07ca54c 115 108 2024-05-01T17:03:59Z Axxyyy 2 Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = [[Module:Inventory slot]], moduleUi = [[Module:UI]], separator = '&nbsp;+', setSeparator = '&nbsp;or', tableDescription = '$1 recipes', } local slot = require( i18n.moduleSlot ) local prefixes = slot.i18n.prefixes --[[Merges a list, or inserts a string or table into a table --]] local function mergeList( parentTable, content ) local i = #parentTable + 1 if content[1] then -- Merge list into table for _, v in ipairs( content ) do parentTable[i] = v i = i + 1 end else -- Add strings or tables to table parentTable[i] = content end end --[[Loops through the input and output args and parses them into a single table, with alias reference data Identical slots reuse the same table, to allow them to be compared like strings --]] local function parseRecipeArgs( args, ingredientArgVals, outputArgs ) local recipeArgs = {} for _, arg in pairs( ingredientArgVals ) do recipeArgs[arg] = args[arg] end for _, arg in pairs( outputArgs ) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs( recipeArgs ) do if frameText then local randomise for _, oArg in pairs( outputArgs ) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText( frameText, randomise, true ) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end --[[Creates a link (with mod name if specified) with any prefix moved outside --]] function m.prefixedLink( name, mod ) local prefix = '' for _, thisPrefix in pairs( prefixes ) do if name:find( '^' .. thisPrefix .. ' ' ) then prefix = thisPrefix .. ' ' name = name:sub( #prefix + 1 ) break end end local page = name if mod then page = slot.i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name ) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end --[[Creates sets of unique items from a set of slots, using the original alias name if available Each set of items are the frames of that slot --]] function m.makeItemSets( argVals, parsedArgs ) local usedItems = {} local function addItem( items, arg, frame, alias ) if alias then frame = alias.frame end local uniqName = ( frame.mod or '' ) .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs( argVals ) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem( items, arg, subframe, alias ) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem( items, arg, frame, alias ) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end --[[Creates links for the name/ingredients columns out of item sets, with the appropriate separators, and optionally "Any" and "Matching" prefixes removed. --]] function m.makeItemLinks( itemSets, removePrefixes ) local links = {} for i, itemSet in ipairs( itemSets ) do local linkSet = {} for i2, item in ipairs( itemSet ) do local name = item.name if removePrefixes then -- Remove prefixes and uppercase first letter name = name :gsub( '^' .. prefixes.any .. ' ', '' ) :gsub( '^' .. prefixes.matching .. ' ', '' ) :gsub( '^%l', string.upper ) end linkSet[i2] = m.prefixedLink( name, item.mod ) end links[i] = table.concat( linkSet, i18n.setSeparator .. '<br>' ) end return table.concat( links, i18n.separator .. '<br>' ) end -- Creates the table header function m.makeHeader( recipeType, class, showName, showDescription, multirow ) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = 'class="unsortable"|' end local header = table.concat( { ' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub( '%$1', recipeType ) .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. i18n.headingRecipe:gsub( '%$1', recipeType ) .. descriptionCell }, '\n' ) return header end -- Create the contents for the name cell function m.makeNameCell( name, outputArgs, parsedRecipeArgs, upcoming ) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks( m.makeItemSets( outputArgs, parsedRecipeArgs ), true ) end if upcoming then if upcoming:find( '%[%[' ) then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat( cell, '<br>' ) end -- Create the contents for the ingredients cell function m.makeIngredientsCell( ingredients, itemSets ) return ingredients or m.makeItemLinks( itemSets ) end --[[Main entry point, creates the table with the relevant DPL vars to allow multiple table rows from separate template calls Also returns the unique ingredients, for categorisation purposes in Module:Crafting --]] function m.table( args, settings ) local f = mw.getCurrentFrame() local multirow = f:callParserFunction( 'recipetable-multirow' ) if multirow == '' then multirow = nil end local showHead = args.head local showFoot = args.foot if multirow then showHead = nil elseif showHead and not showFoot then multirow = true f:callParserFunction( '#dplvar:set', 'recipetable-multirow', '1' ) else showHead = true showFoot = true end local showName = args.showname local showDescription = args.showdescription if multirow then if showHead then showName = args.showname or '1' f:callParserFunction( '#dplvar:set', 'recipetable-name', showName, 'recipetable-description', showDescription ) else showName = f:callParserFunction( '#dplvar', 'recipetable-name' ) showDescription = f:callParserFunction( '#dplvar', 'recipetable-description' ) end end if showName ~= '1' then showName = nil end if showDescription == '' then showDescription = nil end local out = {} if showHead then out[1] = m.makeHeader( settings.type, args.class, showName, showDescription, multirow ) end local ingredientArgVals = settings.ingredientArgs local outputArgs = settings.outputArgs local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs( args, ingredientArgVals, outputArgs ) end local cells = {} if showName then cells[1] = '!' .. m.makeNameCell( args.name, outputArgs, parsedRecipeArgs, args.upcoming ) end local ingredientsItemSets = m.makeItemSets( ingredientArgVals, parsedRecipeArgs ) cells[#cells + 1] = '|' .. m.makeIngredientsCell( args.ingredients, ingredientsItemSets ) cells[#cells + 1] = '|style="padding:1px"|' .. require( i18n.moduleUi )[settings.uiFunc]( args ) if showDescription then cells[#cells + 1] = '|' .. ( args.description or '' ) end out[#out + 1] = table.concat( cells, '\n' ) out[#out + 1] = showFoot and '|}' or '' if showFoot then f:callParserFunction( '#dplvar:set', 'recipetable-multirow', '', 'recipetable-name', '', 'recipetable-description', '' ) end return table.concat( out, '\n|-\n' ), ingredientsItemSets end return m d624ce3b847f1159a44f6a3f08ff6d73038946fe 116 115 2024-05-01T17:04:32Z Axxyyy 2 Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = [[Module:Inventory slot]], moduleUi = [[Module:UI]], separator = '&nbsp;+', setSeparator = '&nbsp;or', tableDescription = '$1 recipes', } local slot = require( i18n.moduleSlot ) local prefixes = slot.i18n.prefixes --[[Merges a list, or inserts a string or table into a table --]] local function mergeList( parentTable, content ) local i = #parentTable + 1 if content[1] then -- Merge list into table for _, v in ipairs( content ) do parentTable[i] = v i = i + 1 end else -- Add strings or tables to table parentTable[i] = content end end --[[Loops through the input and output args and parses them into a single table, with alias reference data Identical slots reuse the same table, to allow them to be compared like strings --]] local function parseRecipeArgs( args, ingredientArgVals, outputArgs ) local recipeArgs = {} for _, arg in pairs( ingredientArgVals ) do recipeArgs[arg] = args[arg] end for _, arg in pairs( outputArgs ) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs( recipeArgs ) do if frameText then local randomise for _, oArg in pairs( outputArgs ) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText( frameText, randomise, true ) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end --[[Creates a link (with mod name if specified) with any prefix moved outside --]] function m.prefixedLink( name, mod ) local prefix = '' for _, thisPrefix in pairs( prefixes ) do if name:find( '^' .. thisPrefix .. ' ' ) then prefix = thisPrefix .. ' ' name = name:sub( #prefix + 1 ) break end end local page = name if mod then page = slot.i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name ) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end --[[Creates sets of unique items from a set of slots, using the original alias name if available Each set of items are the frames of that slot --]] function m.makeItemSets( argVals, parsedArgs ) local usedItems = {} local function addItem( items, arg, frame, alias ) if alias then frame = alias.frame end local uniqName = ( frame.mod or '' ) .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs( argVals ) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem( items, arg, subframe, alias ) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem( items, arg, frame, alias ) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end --[[Creates links for the name/ingredients columns out of item sets, with the appropriate separators, and optionally "Any" and "Matching" prefixes removed. --]] function m.makeItemLinks( itemSets, removePrefixes ) local links = {} for i, itemSet in ipairs( itemSets ) do local linkSet = {} for i2, item in ipairs( itemSet ) do local name = item.name if removePrefixes then -- Remove prefixes and uppercase first letter name = name :gsub( '^' .. prefixes.any .. ' ', '' ) :gsub( '^' .. prefixes.matching .. ' ', '' ) :gsub( '^%l', string.upper ) end linkSet[i2] = m.prefixedLink( name, item.mod ) end links[i] = table.concat( linkSet, i18n.setSeparator .. '<br>' ) end return table.concat( links, i18n.separator .. '<br>' ) end -- Creates the table header function m.makeHeader( recipeType, class, showName, showDescription, multirow ) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = 'class="unsortable"|' end local header = table.concat( { ' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub( '%$1', recipeType ) .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. i18n.headingRecipe:gsub( '%$1', recipeType ) .. descriptionCell }, '\n' ) return header end -- Create the contents for the name cell function m.makeNameCell( name, outputArgs, parsedRecipeArgs, upcoming ) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks( m.makeItemSets( outputArgs, parsedRecipeArgs ), true ) end if upcoming then if upcoming:find( '%[%[' ) then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat( cell, '<br>' ) end -- Create the contents for the ingredients cell function m.makeIngredientsCell( ingredients, itemSets ) return ingredients or m.makeItemLinks( itemSets ) end --[[Main entry point, creates the table with the relevant DPL vars to allow multiple table rows from separate template calls Also returns the unique ingredients, for categorisation purposes in Module:Crafting --]] function m.table( args, settings ) local f = mw.getCurrentFrame() local multirow = f:callParserFunction( '#dplvar', 'recipetable-multirow' ) if multirow == '' then multirow = nil end local showHead = args.head local showFoot = args.foot if multirow then showHead = nil elseif showHead and not showFoot then multirow = true f:callParserFunction( '#dplvar:set', 'recipetable-multirow', '1' ) else showHead = true showFoot = true end local showName = args.showname local showDescription = args.showdescription if multirow then if showHead then showName = args.showname or '1' f:callParserFunction( '#dplvar:set', 'recipetable-name', showName, 'recipetable-description', showDescription ) else showName = f:callParserFunction( '#dplvar', 'recipetable-name' ) showDescription = f:callParserFunction( '#dplvar', 'recipetable-description' ) end end if showName ~= '1' then showName = nil end if showDescription == '' then showDescription = nil end local out = {} if showHead then out[1] = m.makeHeader( settings.type, args.class, showName, showDescription, multirow ) end local ingredientArgVals = settings.ingredientArgs local outputArgs = settings.outputArgs local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs( args, ingredientArgVals, outputArgs ) end local cells = {} if showName then cells[1] = '!' .. m.makeNameCell( args.name, outputArgs, parsedRecipeArgs, args.upcoming ) end local ingredientsItemSets = m.makeItemSets( ingredientArgVals, parsedRecipeArgs ) cells[#cells + 1] = '|' .. m.makeIngredientsCell( args.ingredients, ingredientsItemSets ) cells[#cells + 1] = '|style="padding:1px"|' .. require( i18n.moduleUi )[settings.uiFunc]( args ) if showDescription then cells[#cells + 1] = '|' .. ( args.description or '' ) end out[#out + 1] = table.concat( cells, '\n' ) out[#out + 1] = showFoot and '|}' or '' if showFoot then f:callParserFunction( '#dplvar:set', 'recipetable-multirow', '', 'recipetable-name', '', 'recipetable-description', '' ) end return table.concat( out, '\n|-\n' ), ingredientsItemSets end return m 20dd66cae4722d0b20bc83f73a7df89df07ca54c Template:Crafting 10 66 109 2024-05-01T14:36:16Z Axxyyy 2 Created page with "<noinclude>{{doc}}</noinclude> {{doc/start}} {{lua}} Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you. By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><n..." wikitext text/x-wiki <noinclude>{{doc}}</noinclude> {{doc/start}} {{lua}} Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you. By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><nowiki>{{{mode=noname}}}</nowiki></tt> in the first template of the table to hide the Name column. You also need to set <tt><nowiki>{{{foot=1}}}</nowiki></tt> in the last template of the table. Displaying a shapeless recipe can be accomplished by simply leaving out the grid positions for all ingredients. If the recipe is shapeless and uses less than 5 slots, the template will automatically arrange the items into the bottom-left square, indicating that the recipe can be used in the inventory crafting area. Example usage: <pre> {{Crafting |head=1 |B2=Coal |B3=Stick |Output=Torch,4 }} {{Crafting |Blaze Powder |Gunpowder |Coal |Output=Fire Charge,3 }} {{Crafting |A1= Coal |B1= Coal |C1= Coal |A2= Coal |B2= Coal |C2= Coal |A3= Coal |B3= Coal |C3= Coal |Output=Block of Coal |upcoming=1 }} {{Crafting |name=[[Pickaxe]] |ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s |A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B2=Stick |B3=Stick |Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe |foot=1 }} </pre> produces: {{Crafting |head=1 |B2=Coal |B3=Stick |Output=Torch,4 }} {{Crafting |Blaze Powder |Gunpowder |Coal |Output=Fire Charge,3 }} {{Crafting |A1= Coal |B1= Coal |C1= Coal |A2= Coal |B2= Coal |C2= Coal |A3= Coal |B3= Coal |C3= Coal |Output=Block of Coal |upcoming=1 }} {{Crafting |name=[[Pickaxe]] |ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s |A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B2=Stick |B3=Stick |Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe |foot=1 }} {{doc/end}} c4dac3a92f024793c070b3edf1f13e545e92c42e Template:Doc/start 10 67 110 2024-05-01T14:45:42Z Axxyyy 2 Created page with "<includeonly><!-- -->{{#vardefine: nodoc | {{{nodoc}}} }}<!-- -->{{#vardefine: baddoc | {{{baddoc}}} }}<!-- -->{{#if: {{{1|}}} | {{#ifeq: {{SUBPAGENAME}} | doc | | <div style="height: 1em; clear: both"></div> }} }}<!-- --><div style="margin: 0em auto 1em; background-color: #{{#if: {{{nodoc|}}} | F9EAEA | {{#if: {{{baddoc|}}} | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"> <div style="padding-bottom: 3px; border-bottom: 1px solid #AAAAAA; margin-bot..." wikitext text/x-wiki <includeonly><!-- -->{{#vardefine: nodoc | {{{nodoc}}} }}<!-- -->{{#vardefine: baddoc | {{{baddoc}}} }}<!-- -->{{#if: {{{1|}}} | {{#ifeq: {{SUBPAGENAME}} | doc | | <div style="height: 1em; clear: both"></div> }} }}<!-- --><div style="margin: 0em auto 1em; background-color: #{{#if: {{{nodoc|}}} | F9EAEA | {{#if: {{{baddoc|}}} | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"> <div style="padding-bottom: 3px; border-bottom: 1px solid #AAAAAA; margin-bottom: 1ex;"><!-- -->[[File:Template-{{#if: {{{nodoc|}}} | no | {{#if: {{{baddoc|}}} | bad }} }}info.png|50px]] <span style="font-weight: bold; font-size: 125%;">Documentation</span><!-- --><div class="plainlinks" style="float: right; margin-left: 5px">&#91;[{{fullurl:{{FULLPAGENAME}}|action=purge}} purge]&#93;</div></div><!-- -->{{#if: {{{nodoc|}}} | '''This template has no documentation. If you know how to use this template, please add some.'''<!-- -->{{#ifeq: {{SUBPAGENAME}} | doc | | [[Category:Templates with no documentation|{{BASEPAGENAME}}]]}} |<!-- -->{{#if: {{{baddoc|}}} | '''This template's documentation has been marked as bad. Please improve or add to it.'''<!-- -->{{#ifeq: {{SUBPAGENAME}} | doc | | [[Category:Templates with bad documentation|{{BASEPAGENAME}}]]}}<!-- -->}} }}</includeonly><noinclude> {{doc|Template:Doc/start/doc}}</noinclude> 133556afe46009f50e58fbe3a4a5bee4c1198253 Template:Doc 10 68 111 2024-05-01T14:46:21Z Axxyyy 2 Created page with "<noinclude>{{doc/start}} To use, create a sub-page from the template called '''doc''', put {{tl|doc/start}} at the start of your documentation, and {{tl|doc/end}} at the end. Go back to your main template page and put &lt;noinclude&gt;{{tl|doc}}&lt;/noinclude&gt; on a newline after the end of the template. /doc pages will automatically be added to [[:Category:Documentation templates]]. == Optional parameters == === clear === If your main template page has floating cont..." wikitext text/x-wiki <noinclude>{{doc/start}} To use, create a sub-page from the template called '''doc''', put {{tl|doc/start}} at the start of your documentation, and {{tl|doc/end}} at the end. Go back to your main template page and put &lt;noinclude&gt;{{tl|doc}}&lt;/noinclude&gt; on a newline after the end of the template. /doc pages will automatically be added to [[:Category:Documentation templates]]. == Optional parameters == === clear === If your main template page has floating content and you would like to stop it going over the documentation, put {{tl|doc/start|clear}} instead of {{tl|doc/start}} on your documentation page.<br> This is also useful for templates not using &lt;includeonly&gt;, as it will put some space between the template and the documentation box. === nodoc=1 === If a template has no documentation and you don't know how to use it, put {{tl|doc/start|nodoc{{=}}1}} (or if the template needs clear as well, {{tl|doc/start|clear|nodoc{{=}}1}}) instead of {{tl|doc/start}} on your documentation page.<br> The documentation's background will become red to make it more noticeable, and the page will be added to [[:Category:Templates with no documentation]]. === baddoc=1 === Similar to nodoc, this is used to mark templates that '''do''' have documentation, but it isn't very good. This can mean it doesn't have enough examples, doesn't explain all the functions properly, or doesn't explain the point of the template properly.<br> The documentation's background will become yellow to make it more noticeable, and the page will be added to [[:Category:Templates with bad documentation]]. If both nodoc and baddoc are specified, baddoc will be ignored. </div> [[Category:Documentation templates|*]] </noinclude><includeonly>{{/doc}}</includeonly> 2073857a24bf574b0bdcd2bcf700b5783b3e5dac Doc/start 0 69 112 2024-05-01T14:57:49Z Axxyyy 2 Created page with "<includeonly><!-- -->{{#vardefine: nodoc | {{{nodoc}}} }}<!-- -->{{#vardefine: baddoc | {{{baddoc}}} }}<!-- -->{{#if: {{{1|}}} | {{#ifeq: {{SUBPAGENAME}} | doc | | <div style="height: 1em; clear: both"></div> }} }}<!-- --><div style="margin: 0em auto 1em; background-color: #{{#if: {{{nodoc|}}} | F9EAEA | {{#if: {{{baddoc|}}} | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"> <div style="padding-bottom: 3px; border-bottom: 1px solid #AAAAAA; margin-bot..." wikitext text/x-wiki <includeonly><!-- -->{{#vardefine: nodoc | {{{nodoc}}} }}<!-- -->{{#vardefine: baddoc | {{{baddoc}}} }}<!-- -->{{#if: {{{1|}}} | {{#ifeq: {{SUBPAGENAME}} | doc | | <div style="height: 1em; clear: both"></div> }} }}<!-- --><div style="margin: 0em auto 1em; background-color: #{{#if: {{{nodoc|}}} | F9EAEA | {{#if: {{{baddoc|}}} | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"> <div style="padding-bottom: 3px; border-bottom: 1px solid #AAAAAA; margin-bottom: 1ex;"><!-- -->[[File:Template-{{#if: {{{nodoc|}}} | no | {{#if: {{{baddoc|}}} | bad }} }}info.png|50px]] <span style="font-weight: bold; font-size: 125%;">Documentation</span><!-- --><div class="plainlinks" style="float: right; margin-left: 5px">&#91;[{{fullurl:{{FULLPAGENAME}}|action=purge}} purge]&#93;</div></div><!-- -->{{#if: {{{nodoc|}}} | '''This template has no documentation. If you know how to use this template, please add some.'''<!-- -->{{#ifeq: {{SUBPAGENAME}} | doc | | [[Category:Templates with no documentation|{{BASEPAGENAME}}]]}} |<!-- -->{{#if: {{{baddoc|}}} | '''This template's documentation has been marked as bad. Please improve or add to it.'''<!-- -->{{#ifeq: {{SUBPAGENAME}} | doc | | [[Category:Templates with bad documentation|{{BASEPAGENAME}}]]}}<!-- -->}} }}</includeonly><noinclude> {{doc|Template:Doc/start/doc}}</noinclude> 133556afe46009f50e58fbe3a4a5bee4c1198253 Doc/end 0 70 113 2024-05-01T14:59:27Z Axxyyy 2 Created page with "<includeonly></div> <div style="margin: 0 auto; background-color: #{{#ifeq: {{#var: nodoc}} | 1 | F9EAEA | {{#ifeq: {{#var: baddoc}} | 1 | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"><!-- -->{{#ifeq: {{SUBPAGENAME}} | doc |<!-- --><p style="margin: 0">This is the documentation page, it should be transcluded into the main template page. See [[Template:Doc]] for more information.</p>[[Category:Documentation templates|{{BASEPAGENAME}}]] |<!-- --><p cla..." wikitext text/x-wiki <includeonly></div> <div style="margin: 0 auto; background-color: #{{#ifeq: {{#var: nodoc}} | 1 | F9EAEA | {{#ifeq: {{#var: baddoc}} | 1 | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"><!-- -->{{#ifeq: {{SUBPAGENAME}} | doc |<!-- --><p style="margin: 0">This is the documentation page, it should be transcluded into the main template page. See [[Template:Doc]] for more information.</p>[[Category:Documentation templates|{{BASEPAGENAME}}]] |<!-- --><p class="plainlinks" style="margin: 0">The above documentation is transcluded from [[{{FULLPAGENAME}}/doc]]. <small>([{{fullurl:{{FULLPAGENAME}}/doc|action=edit}} edit] &#124; [{{fullurl:{{FULLPAGENAME}}/doc|action=history}} history])</small></p> }}<!-- --></div></includeonly><noinclude>{{doc}}</noinclude> 3e74ccd6a5228ff608a4b8961415736284b754ab Template:Extension DPL 10 71 114 2024-05-01T16:54:06Z DynamicPageList3 extension 5 Autogenerated DynamicPageList3's necessary template for content inclusion. wikitext text/x-wiki <noinclude>This page was automatically created. It serves as an anchor page for all '''[[Special:WhatLinksHere/Template:Extension_DPL|invocations]]''' of [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:DynamicPageList3 Extension:DynamicPageList3].</noinclude> 087ffd4625ae7b1fea3436ec3f929e82ee739d29 Template:Doc/end 10 72 117 2024-05-02T02:48:06Z Axxyyy 2 Created page with "<includeonly></div> <div style="margin: 0 auto; background-color: #{{#ifeq: {{#var: nodoc}} | 1 | F9EAEA | {{#ifeq: {{#var: baddoc}} | 1 | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"><!-- -->{{#ifeq: {{SUBPAGENAME}} | doc |<!-- --><p style="margin: 0">This is the documentation page, it should be transcluded into the main template page. See [[Template:Doc]] for more information.</p>[[Category:Documentation templates|{{BASEPAGENAME}}]] |<!-- --><p cla..." wikitext text/x-wiki <includeonly></div> <div style="margin: 0 auto; background-color: #{{#ifeq: {{#var: nodoc}} | 1 | F9EAEA | {{#ifeq: {{#var: baddoc}} | 1 | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"><!-- -->{{#ifeq: {{SUBPAGENAME}} | doc |<!-- --><p style="margin: 0">This is the documentation page, it should be transcluded into the main template page. See [[Template:Doc]] for more information.</p>[[Category:Documentation templates|{{BASEPAGENAME}}]] |<!-- --><p class="plainlinks" style="margin: 0">The above documentation is transcluded from [[{{FULLPAGENAME}}/doc]]. <small>([{{fullurl:{{FULLPAGENAME}}/doc|action=edit}} edit] &#124; [{{fullurl:{{FULLPAGENAME}}/doc|action=history}} history])</small></p> }}<!-- --></div></includeonly><noinclude>{{doc}}</noinclude> 3e74ccd6a5228ff608a4b8961415736284b754ab Template:Crafting/doc 10 73 118 2024-05-02T02:49:59Z Axxyyy 2 Created page with "{{doc/start}} {{lua}} Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you. By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><nowiki>{{{mode=noname}}}</nowiki..." wikitext text/x-wiki {{doc/start}} {{lua}} Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you. By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><nowiki>{{{mode=noname}}}</nowiki></tt> in the first template of the table to hide the Name column. You also need to set <tt><nowiki>{{{foot=1}}}</nowiki></tt> in the last template of the table. Displaying a shapeless recipe can be accomplished by simply leaving out the grid positions for all ingredients. If the recipe is shapeless and uses less than 5 slots, the template will automatically arrange the items into the bottom-left square, indicating that the recipe can be used in the inventory crafting area. Example usage: <pre> {{Crafting |head=1 |B2=Coal |B3=Stick |Output=Torch,4 }} {{Crafting |Blaze Powder |Gunpowder |Coal |Output=Fire Charge,3 }} {{Crafting |A1= Coal |B1= Coal |C1= Coal |A2= Coal |B2= Coal |C2= Coal |A3= Coal |B3= Coal |C3= Coal |Output=Block of Coal |upcoming=1 }} {{Crafting |name=[[Pickaxe]] |ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s |A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B2=Stick |B3=Stick |Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe |foot=1 }} </pre> produces: {{#invoke:Crafting|table |head=1 |B2=Coal |B3=Stick |Output=Torch,4 }} {{#invoke:Crafting|table |Blaze Powder |Gunpowder |Coal |Output=Fire Charge,3 }} {{#invoke:Crafting|table |A1= Coal |B1= Coal |C1= Coal |A2= Coal |B2= Coal |C2= Coal |A3= Coal |B3= Coal |C3= Coal |Output=Block of Coal |upcoming=1 }} {{#invoke:Crafting|table |name=[[Pickaxe]] |ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s |A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B2=Stick |B3=Stick |Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe |foot=1 }} {{doc/end}} c6ce5e299c50b2f5a76828735bfb159ffd62ba3f 125 118 2024-05-02T16:49:20Z Axxyyy 2 wikitext text/x-wiki {{doc/start}} {{lua}} Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you. By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><nowiki>{{{mode=noname}}}</nowiki></tt> in the first template of the table to hide the Name column. You also need to set <tt><nowiki>{{{foot=1}}}</nowiki></tt> in the last template of the table. Displaying a shapeless recipe can be accomplished by simply leaving out the grid positions for all ingredients. If the recipe is shapeless and uses less than 5 slots, the template will automatically arrange the items into the bottom-left square, indicating that the recipe can be used in the inventory crafting area. Example usage: <pre> {{Crafting |head=1 |B2=Coal |B3=Stick |Output=Torch,4 }} {{Crafting |Blaze Powder |Gunpowder |Coal |Output=Fire Charge,3 }} {{Crafting |A1= Coal |B1= Coal |C1= Coal |A2= Coal |B2= Coal |C2= Coal |A3= Coal |B3= Coal |C3= Coal |Output=Block of Coal |upcoming=1 }} {{Crafting |name=[[Pickaxe]] |ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s |A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B2=Stick |B3=Stick |Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe |foot=1 }} </pre> produces: {{#invoke:Crafting|table |head=1 |B2=Coal |B3=Stick |Output=Torch,4 }} {{#invoke:Crafting|table |Blaze Powder |Gunpowder |Coal |Output=Fire Charge,3 }} {{#invoke:Crafting|table |A1= Coal |B1= Coal |C1= Coal |A2= Coal |B2= Coal |C2= Coal |A3= Coal |B3= Coal |C3= Coal |Output=Block of Coal |upcoming=1 }} {{#invoke:Crafting|table |name=[[Pickaxe]] |ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s |A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B2=Stick |B3=Stick |Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe |foot=1 }} {{doc/end}} 5c28312c79a2a582b529f507d54c2c38e51b7130 Template:Crafting 10 66 119 109 2024-05-02T02:51:08Z Axxyyy 2 wikitext text/x-wiki <noinclude>{{doc}}</noinclude> {{doc/start}} {{lua}} Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you. By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><nowiki>{{{mode=noname}}}</nowiki></tt> in the first template of the table to hide the Name column. You also need to set <tt><nowiki>{{{foot=1}}}</nowiki></tt> in the last template of the table. Displaying a shapeless recipe can be accomplished by simply leaving out the grid positions for all ingredients. If the recipe is shapeless and uses less than 5 slots, the template will automatically arrange the items into the bottom-left square, indicating that the recipe can be used in the inventory crafting area. Example usage: <pre> {{Crafting |head=1 |B2=Coal |B3=Stick |Output=Torch,4 }} {{Crafting |Blaze Powder |Gunpowder |Coal |Output=Fire Charge,3 }} {{Crafting |A1= Coal |B1= Coal |C1= Coal |A2= Coal |B2= Coal |C2= Coal |A3= Coal |B3= Coal |C3= Coal |Output=Block of Coal |upcoming=1 }} {{Crafting |name=[[Pickaxe]] |ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s |A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B2=Stick |B3=Stick |Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe |foot=1 }} </pre> produces: {{#invoke:Crafting|table |head=1 |B2=Coal |B3=Stick |Output=Torch,4 }} {{#invoke:Crafting|table |Blaze Powder |Gunpowder |Coal |Output=Fire Charge,3 }} {{#invoke:Crafting|table |A1= Coal |B1= Coal |C1= Coal |A2= Coal |B2= Coal |C2= Coal |A3= Coal |B3= Coal |C3= Coal |Output=Block of Coal |upcoming=1 }} {{#invoke:Crafting|table |name=[[Pickaxe]] |ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s |A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond |B2=Stick |B3=Stick |Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe |foot=1 }} {{doc/end}} 59f363e2e936e9645046acd12f78cfdc7872133b 124 119 2024-05-02T16:49:00Z Axxyyy 2 Replaced content with "<includeonly>{{#invoke:crafting|table}}</includeonly> <noinclude> {{/doc}} [[Category:Templates]] </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:crafting|table}}</includeonly> <noinclude> {{/doc}} [[Category:Templates]] </noinclude> a5d6a0f04e8f53adeacab235b768056a38a1aba4 Module:Crafting 828 64 120 107 2024-05-02T16:32:21Z Axxyyy 2 Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = "Module:Inventory slot", moduleUi = "Module:UI", separator = "&nbsp;+", setSeparator = "&nbsp;or", tableDescription = "$1 recipes", } local slot = require(i18n.moduleSlot) local prefixes = slot.i18n.prefixes local function mergeList(parentTable, content) local i = #parentTable + 1 if content[1] then for _, v in ipairs(content) do parentTable[i] = v i = i + 1 end else parentTable[i] = content end end local function parseRecipeArgs(args, ingredientArgVals, outputArgs) local recipeArgs = {} for _, arg in pairs(ingredientArgVals) do recipeArgs[arg] = args[arg] end for _, arg in pairs(outputArgs) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs(recipeArgs) do if frameText then local randomise for _, oArg in pairs(outputArgs) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText(frameText, randomise, true) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end function m.prefixedLink(name, mod) local prefix = '' for _, thisPrefix in pairs(prefixes) do if name:find('^' .. thisPrefix .. ' ') then prefix = thisPrefix .. ' ' name = name:sub(#prefix + 1) break end end local page = name if mod then page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end function m.makeItemSets(argVals, parsedArgs) local usedItems = {} local function addItem(items, arg, frame, alias) if alias then frame = alias.frame end local uniqName = (frame.mod or '') .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs(argVals) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem(items, arg, subframe, alias) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem(items, arg, frame, alias) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end function m.makeItemLinks(itemSets, removePrefixes) local links = {} for i, itemSet in ipairs(itemSets) do local linkSet = {} for i2, item in ipairs(itemSet) do local name = item.name if removePrefixes then name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper) end linkSet[i2] = m.prefixedLink(name, item.mod) end links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>') end return table.concat(links, i18n.separator .. '<br>') end function m.makeHeader(recipeType, class, showName, showDescription, multirow) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = 'class="unsortable"|' end local header = table.concat({ ' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) .. descriptionCell }, '\n') return header end function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true) end if upcoming then if upcoming:find('%[%[') then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat(cell, '<br>') end function m.makeIngredientsCell(ingredients, itemSets) return ingredients or m.makeItemLinks(itemSets) end function m.table(args, settings) local multirow = mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-multirow') == '1' local showHead = args.head local showFoot = args.foot if multirow then showHead = nil elseif showHead and not showFoot then multirow = true mw.getCurrentFrame():callParserFunction('dplvar', 'set', 'recipetable-multirow', '1') else showHead = true showFoot = true end local showName = args.showname local showDescription = args.showdescription if multirow then if showHead then showName = args.showname or '1' mw.getCurrentFrame():callParserFunction('dplvar', 'set', 'recipetable-name', showName, 'recipetable-description', showDescription) else showName = mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-name') showDescription = mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-description') end end if showName ~= '1' then showName = nil end if showDescription == '' then showDescription = nil end local out = {} if showHead then out[1] = m.makeHeader(settings.type, args.class, showName, showDescription, multirow) end local ingredientArgVals = settings.ingredientArgs local outputArgs = settings.outputArgs local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs) end local cells = {} if showName then cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming) end local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs) cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets) cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[settings.uiFunc](args) if showDescription then cells[#cells + 1] = '|' .. (args.description or '') end out[#out + 1] = table.concat(cells, '\n') out[#out + 1] = showFoot and '|}' or '' if showFoot then mw.getCurrentFrame():callParserFunction('dplvar', 'set', 'recipetable-multirow', '', 'recipetable-name', '', 'recipetable-description', '' ) end return table.concat(out, '\n|-\n'), ingredientsItemSets end return m 03ae8e28584e2abb03bec64296b7a4df6c262330 121 120 2024-05-02T16:35:14Z Axxyyy 2 Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = "Module:Inventory slot", moduleUi = "Module:UI", separator = "&nbsp;+", setSeparator = "&nbsp;or", tableDescription = "$1 recipes", } local slot = require(i18n.moduleSlot) local prefixes = slot.i18n.prefixes local function mergeList(parentTable, content) local i = #parentTable + 1 if content[1] then for _, v in ipairs(content) do parentTable[i] = v i = i + 1 end else parentTable[i] = content end end local function parseRecipeArgs(args, ingredientArgVals, outputArgs) local recipeArgs = {} for _, arg in pairs(ingredientArgVals) do recipeArgs[arg] = args[arg] end for _, arg in pairs(outputArgs) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs(recipeArgs) do if frameText then local randomise for _, oArg in pairs(outputArgs) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText(frameText, randomise, true) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end function m.prefixedLink(name, mod) local prefix = '' for _, thisPrefix in pairs(prefixes) do if name:find('^' .. thisPrefix .. ' ') then prefix = thisPrefix .. ' ' name = name:sub(#prefix + 1) break end end local page = name if mod then page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end function m.makeItemSets(argVals, parsedArgs) local usedItems = {} local function addItem(items, arg, frame, alias) if alias then frame = alias.frame end local uniqName = (frame.mod or '') .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs(argVals) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem(items, arg, subframe, alias) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem(items, arg, frame, alias) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end function m.makeItemLinks(itemSets, removePrefixes) local links = {} for i, itemSet in ipairs(itemSets) do local linkSet = {} for i2, item in ipairs(itemSet) do local name = item.name if removePrefixes then name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper) end linkSet[i2] = m.prefixedLink(name, item.mod) end links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>') end return table.concat(links, i18n.separator .. '<br>') end function m.makeHeader(recipeType, class, showName, showDescription, multirow) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = 'class="unsortable"|' end local header = table.concat({ ' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) .. descriptionCell }, '\n') return header end function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true) end if upcoming then if upcoming:find('%[%[') then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat(cell, '<br>') end function m.makeIngredientsCell(ingredients, itemSets) return ingredients or m.makeItemLinks(itemSets) end function m.table(args, settings, multirow, showHead, showFoot, showName, showDescription) local out = {} if showHead then out[1] = m.makeHeader(settings.type, args.class, showName, showDescription, multirow) end local ingredientArgVals = settings.ingredientArgs local outputArgs = settings.outputArgs local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs) end local cells = {} if showName then cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming) end local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs) cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets) cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[settings.uiFunc](args) if showDescription then cells[#cells + 1] = '|' .. (args.description or '') end out[#out + 1] = table.concat(cells, '\n') out[#out + 1] = showFoot and '|}' or '' return table.concat(out, '\n|-\n'), ingredientsItemSets end return m f59619c6ab16c1d8b3371e1792bda9ca9fe90b94 122 121 2024-05-02T16:43:29Z Axxyyy 2 Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = "Module:Inventory slot", moduleUi = "Module:UI", separator = "&nbsp;+", setSeparator = "&nbsp;or", tableDescription = "$1 recipes", } local slot = require(i18n.moduleSlot) local prefixes = slot.i18n.prefixes local function mergeList(parentTable, content) local i = #parentTable + 1 if content[1] then for _, v in ipairs(content) do parentTable[i] = v i = i + 1 end else parentTable[i] = content end end local function parseRecipeArgs(args, ingredientArgVals, outputArgs) local recipeArgs = {} for _, arg in pairs(ingredientArgVals) do recipeArgs[arg] = args[arg] end for _, arg in pairs(outputArgs) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs(recipeArgs) do if frameText then local randomise for _, oArg in pairs(outputArgs) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText(frameText, randomise, true) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end function m.prefixedLink(name, mod) local prefix = '' for _, thisPrefix in pairs(prefixes) do if name:find('^' .. thisPrefix .. ' ') then prefix = thisPrefix .. ' ' name = name:sub(#prefix + 1) break end end local page = name if mod then page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end function m.makeItemSets(argVals, parsedArgs) local usedItems = {} local function addItem(items, arg, frame, alias) if alias then frame = alias.frame end local uniqName = (frame.mod or '') .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs(argVals) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem(items, arg, subframe, alias) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem(items, arg, frame, alias) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end function m.makeItemLinks(itemSets, removePrefixes) local links = {} for i, itemSet in ipairs(itemSets) do local linkSet = {} for i2, item in ipairs(itemSet) do local name = item.name if removePrefixes then name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper) end linkSet[i2] = m.prefixedLink(name, item.mod) end links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>') end return table.concat(links, i18n.separator .. '<br>') end function m.makeHeader(recipeType, class, showName, showDescription, multirow) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = 'class="unsortable"|' end local header = table.concat({ ' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) .. descriptionCell }, '\n') return header end function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true) end if upcoming then if upcoming:find('%[%[') then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat(cell, '<br>') end function m.makeIngredientsCell(ingredients, itemSets) return ingredients or m.makeItemLinks(itemSets) end function m.table(args, settings) local multirow = args.multirow or mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-multirow') == '1' local showHead = args.showhead or mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-head') == '1' local showFoot = args.showfoot or mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-foot') == '1' local showName = args.showname or mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-name') == '1' local showDescription = args.showdescription or mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-description') local out = {} if showHead then out[1] = m.makeHeader(settings.type, args.class, showName, showDescription, multirow) end local ingredientArgVals = settings.ingredientArgs local outputArgs = settings.outputArgs local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs) end local cells = {} if showName then cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming) end local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs) cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets) cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[settings.uiFunc](args) if showDescription then cells[#cells + 1] = '|' .. (args.description or '') end out[#out + 1] = table.concat(cells, '\n') out[#out + 1] = showFoot and '|}' or '' return table.concat(out, '\n|-\n'), ingredientsItemSets end return m f052bf39647d2a56dcb94dd12d87d19df9331be7 123 122 2024-05-02T16:47:57Z Axxyyy 2 Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = "Module:Inventory slot", moduleUi = "Module:UI", separator = "&nbsp;+", setSeparator = "&nbsp;or", tableDescription = "$1 recipes", } local slot = require(i18n.moduleSlot) local prefixes = slot.i18n.prefixes local function mergeList(parentTable, content) local i = #parentTable + 1 if content[1] then for _, v in ipairs(content) do parentTable[i] = v i = i + 1 end else parentTable[i] = content end end local function parseRecipeArgs(args, ingredientArgVals, outputArgs) local recipeArgs = {} for _, arg in pairs(ingredientArgVals) do recipeArgs[arg] = args[arg] end for _, arg in pairs(outputArgs) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs(recipeArgs) do if frameText then local randomise for _, oArg in pairs(outputArgs) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText(frameText, randomise, true) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end function m.prefixedLink(name, mod) local prefix = '' for _, thisPrefix in pairs(prefixes) do if name:find('^' .. thisPrefix .. ' ') then prefix = thisPrefix .. ' ' name = name:sub(#prefix + 1) break end end local page = name if mod then page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end function m.makeItemSets(argVals, parsedArgs) local usedItems = {} local function addItem(items, arg, frame, alias) if alias then frame = alias.frame end local uniqName = (frame.mod or '') .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs(argVals) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem(items, arg, subframe, alias) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem(items, arg, frame, alias) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end function m.makeItemLinks(itemSets, removePrefixes) local links = {} for i, itemSet in ipairs(itemSets) do local linkSet = {} for i2, item in ipairs(itemSet) do local name = item.name if removePrefixes then name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper) end linkSet[i2] = m.prefixedLink(name, item.mod) end links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>') end return table.concat(links, i18n.separator .. '<br>') end function m.makeHeader(recipeType, class, showName, showDescription, multirow) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = 'class="unsortable"|' end local header = table.concat({ ' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) .. descriptionCell }, '\n') return header end function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true) end if upcoming then if upcoming:find('%[%[') then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat(cell, '<br>') end function m.makeIngredientsCell(ingredients, itemSets) return ingredients or m.makeItemLinks(itemSets) end function m.table(args, showHead, showFoot, showName, showDescription, multirow) local out = {} if showHead then out[1] = m.makeHeader(args.type, args.class, showName, showDescription, multirow) end local ingredientArgVals = args.ingredientArgs local outputArgs = args.outputArgs local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs) end local cells = {} if showName then cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming) end local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs) cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets) cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[args.uiFunc](args) if showDescription then cells[#cells + 1] = '|' .. (args.description or '') end out[#out + 1] = table.concat(cells, '\n') out[#out + 1] = showFoot and '|}' or '' return table.concat(out, '\n|-\n'), ingredientsItemSets end return m 5b4136f849cce4910c93923c096687b424b9e14a 126 123 2024-05-02T16:50:06Z Axxyyy 2 Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = "Module:Inventory slot", moduleUi = "Module:UI", separator = "&nbsp;+", setSeparator = "&nbsp;or", tableDescription = "$1 recipes", } local slot = require(i18n.moduleSlot) local prefixes = slot.i18n.prefixes local function mergeList(parentTable, content) local i = #parentTable + 1 if content[1] then for _, v in ipairs(content) do parentTable[i] = v i = i + 1 end else parentTable[i] = content end end local function parseRecipeArgs(args, ingredientArgVals, outputArgs) local recipeArgs = {} for _, arg in pairs(ingredientArgVals) do recipeArgs[arg] = args[arg] end for _, arg in pairs(outputArgs) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs(recipeArgs) do if frameText then local randomise for _, oArg in pairs(outputArgs) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText(frameText, randomise, true) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end function m.prefixedLink(name, mod) local prefix = '' for _, thisPrefix in pairs(prefixes) do if name:find('^' .. thisPrefix .. ' ') then prefix = thisPrefix .. ' ' name = name:sub(#prefix + 1) break end end local page = name if mod then page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end function m.makeItemSets(argVals, parsedArgs) local usedItems = {} local function addItem(items, arg, frame, alias) if alias then frame = alias.frame end local uniqName = (frame.mod or '') .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs(argVals) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem(items, arg, subframe, alias) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem(items, arg, frame, alias) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end function m.makeItemLinks(itemSets, removePrefixes) local links = {} for i, itemSet in ipairs(itemSets) do local linkSet = {} for i2, item in ipairs(itemSet) do local name = item.name if removePrefixes then name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper) end linkSet[i2] = m.prefixedLink(name, item.mod) end links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>') end return table.concat(links, i18n.separator .. '<br>') end function m.makeHeader(recipeType, class, showName, showDescription, multirow) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = 'class="unsortable"|' end local header = table.concat({ ' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) .. descriptionCell }, '\n') return header end function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true) end if upcoming then if upcoming:find('%[%[') then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat(cell, '<br>') end function m.makeIngredientsCell(ingredients, itemSets) return ingredients or m.makeItemLinks(itemSets) end function m.table(args) local out = {} if args.showHead then out[1] = m.makeHeader(args.type, args.class, args.showName, args.showDescription, args.multirow) end local ingredientArgVals = args.ingredientArgs local outputArgs = args.outputArgs local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs) end local cells = {} if args.showName then cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming) end local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs) cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets) cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[args.uiFunc](args) if args.showDescription then cells[#cells + 1] = '|' .. (args.description or '') end out[#out + 1] = table.concat(cells, '\n') out[#out + 1] = args.showFoot and '|}' or '' return table.concat(out, '\n|-\n'), ingredientsItemSets end return m e2015652f002d5c8ba6e0c530d0237834042688d 127 126 2024-05-02T16:55:25Z Axxyyy 2 Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = "Module:Inventory slot", moduleUi = "Module:UI", separator = "&nbsp;+", setSeparator = "&nbsp;or", tableDescription = "$1 recipes", } local slot = require(i18n.moduleSlot) local prefixes = slot.i18n.prefixes local function mergeList(parentTable, content) local i = #parentTable + 1 if content[1] then for _, v in ipairs(content) do parentTable[i] = v i = i + 1 end else parentTable[i] = content end end local function parseRecipeArgs(args, ingredientArgVals, outputArgs) local recipeArgs = {} for _, arg in pairs(ingredientArgVals) do recipeArgs[arg] = args[arg] end for _, arg in pairs(outputArgs) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs(recipeArgs) do if frameText then local randomise for _, oArg in pairs(outputArgs) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText(frameText, randomise, true) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end function m.prefixedLink(name, mod) local prefix = '' for _, thisPrefix in pairs(prefixes) do if name:find('^' .. thisPrefix .. ' ') then prefix = thisPrefix .. ' ' name = name:sub(#prefix + 1) break end end local page = name if mod then page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end function m.makeItemSets(argVals, parsedArgs) local usedItems = {} local function addItem(items, arg, frame, alias) if alias then frame = alias.frame end local uniqName = (frame.mod or '') .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs(argVals) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem(items, arg, subframe, alias) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem(items, arg, frame, alias) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end function m.makeItemLinks(itemSets, removePrefixes) local links = {} for i, itemSet in ipairs(itemSets) do local linkSet = {} for i2, item in ipairs(itemSet) do local name = item.name if removePrefixes then name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper) end linkSet[i2] = m.prefixedLink(name, item.mod) end links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>') end return table.concat(links, i18n.separator .. '<br>') end function m.makeHeader(recipeType, class, showName, showDescription, multirow) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = 'class="unsortable"|' end local header = table.concat({ ' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) .. descriptionCell }, '\n') return header end function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true) end if upcoming then if upcoming:find('%[%[') then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat(cell, '<br>') end function m.makeIngredientsCell(ingredients, itemSets) return ingredients or m.makeItemLinks(itemSets) end function m.table(args) args = args or {} -- Provide default empty table if args is nil local out = {} -- Default values for arguments local showHead = args.showHead ~= nil and args.showHead or true local showFoot = args.showFoot ~= nil and args.showFoot or true local showName = args.showName ~= nil and args.showName or true local showDescription = args.showDescription ~= nil and args.showDescription or true local multirow = args.multirow ~= nil and args.multirow or true if showHead then out[1] = m.makeHeader(args.type, args.class, showName, showDescription, multirow) end local ingredientArgVals = args.ingredientArgs or {} local outputArgs = args.outputArgs or {} local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs) end local cells = {} if showName then cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming) end local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs) cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets) cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[args.uiFunc](args) if showDescription then cells[#cells + 1] = '|' .. (args.description or '') end out[#out + 1] = table.concat(cells, '\n') out[#out + 1] = showFoot and '|}' or '' return table.concat(out, '\n|-\n'), ingredientsItemSets end return m 8ede82c18762c86425f5e0cee77d1dec7b3c7f0c 128 127 2024-05-02T16:58:16Z Axxyyy 2 Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = "Module:Inventory slot", moduleUi = "Module:UI", separator = "&nbsp;+", setSeparator = "&nbsp;or", tableDescription = "$1 recipes", } local slot = require(i18n.moduleSlot) local prefixes = slot.i18n.prefixes local function mergeList(parentTable, content) local i = #parentTable + 1 if content[1] then for _, v in ipairs(content) do parentTable[i] = v i = i + 1 end else parentTable[i] = content end end local function parseRecipeArgs(args, ingredientArgVals, outputArgs) local recipeArgs = {} for _, arg in pairs(ingredientArgVals) do recipeArgs[arg] = args[arg] end for _, arg in pairs(outputArgs) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs(recipeArgs) do if frameText then local randomise for _, oArg in pairs(outputArgs) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText(frameText, randomise, true) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end function m.prefixedLink(name, mod) local prefix = '' for _, thisPrefix in pairs(prefixes) do if name:find('^' .. thisPrefix .. ' ') then prefix = thisPrefix .. ' ' name = name:sub(#prefix + 1) break end end local page = name if mod then page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end function m.makeItemSets(argVals, parsedArgs) local usedItems = {} local function addItem(items, arg, frame, alias) if alias then frame = alias.frame end local uniqName = (frame.mod or '') .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs(argVals) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem(items, arg, subframe, alias) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem(items, arg, frame, alias) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end function m.makeItemLinks(itemSets, removePrefixes) local links = {} for i, itemSet in ipairs(itemSets) do local linkSet = {} for i2, item in ipairs(itemSet) do local name = item.name if removePrefixes then name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper) end linkSet[i2] = m.prefixedLink(name, item.mod) end links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>') end return table.concat(links, i18n.separator .. '<br>') end function m.makeHeader(recipeType, class, showName, showDescription, multirow) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = '|class="unsortable"' end local header = table.concat({ '{| class="wikitable ' .. class .. '" data-description="' .. (i18n.tableDescription or ""):gsub('%$1', recipeType or "") .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. '|' .. i18n.headingRecipe:gsub('%$1', recipeType or "") .. descriptionCell }, '\n') return header end function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true) end if upcoming then if upcoming:find('%[%[') then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat(cell, '<br>') end function m.makeIngredientsCell(ingredients, itemSets) return ingredients or m.makeItemLinks(itemSets) end function m.table(args) args = args or {} -- Provide default empty table if args is nil local out = {} -- Default values for arguments local showHead = args.showHead ~= nil and args.showHead or true local showFoot = args.showFoot ~= nil and args.showFoot or true local showName = args.showName ~= nil and args.showName or true local showDescription = args.showDescription ~= nil and args.showDescription or true local multirow = args.multirow ~= nil and args.multirow or true if showHead then out[1] = m.makeHeader(args.type, args.class, showName, showDescription, multirow) end local ingredientArgVals = args.ingredientArgs or {} local outputArgs = args.outputArgs or {} local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs) end local cells = {} if showName then cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming) end local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs) cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets) cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[args.uiFunc](args) if showDescription then cells[#cells + 1] = '|' .. (args.description or '') end out[#out + 1] = table.concat(cells, '\n') out[#out + 1] = showFoot and '|}' or '' return table.concat(out, '\n|-\n'), ingredientsItemSets end return m cde814d36a35e89050c1272f8965d0eb36782654 129 128 2024-05-02T17:01:59Z Axxyyy 2 Scribunto text/plain local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = "Module:Inventory slot", moduleUi = "Module:UI", separator = "&nbsp;+", setSeparator = "&nbsp;or", tableDescription = "$1 recipes", } local slot = require(i18n.moduleSlot) local prefixes = slot.i18n.prefixes local function mergeList(parentTable, content) local i = #parentTable + 1 if content[1] then for _, v in ipairs(content) do parentTable[i] = v i = i + 1 end else parentTable[i] = content end end local function parseRecipeArgs(args, ingredientArgVals, outputArgs) local recipeArgs = {} for _, arg in pairs(ingredientArgVals) do recipeArgs[arg] = args[arg] end for _, arg in pairs(outputArgs) do recipeArgs[arg] = args[arg] end local parsedFrameText = {} local parsedRecipeArgs = {} for arg, frameText in pairs(recipeArgs) do if frameText then local randomise for _, oArg in pairs(outputArgs) do if arg == oArg then randomise = 'never' break end end local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText(frameText, randomise, true) parsedFrameText[frameText] = frames end parsedRecipeArgs[arg] = frames end end return parsedRecipeArgs end function m.prefixedLink(name, mod) local prefix = '' for _, thisPrefix in pairs(prefixes) do if name:find('^' .. thisPrefix .. ' ') then prefix = thisPrefix .. ' ' name = name:sub(#prefix + 1) break end end local page = name if mod then page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name) end return table.concat{ prefix, '[[', page, '|', name, ']]' } end function m.makeItemSets(argVals, parsedArgs) local usedItems = {} local function addItem(items, arg, frame, alias) if alias then frame = alias.frame end local uniqName = (frame.mod or '') .. ':' .. frame.name if not usedItems[uniqName] then usedItems[uniqName] = true items[#items + 1] = frame end return alias and alias.length or 1 end local itemSets = {} local i = 1 for _, arg in ipairs(argVals) do local frames = parsedArgs[arg] if frames then local items = {} local frameNum = 1 while frameNum <= #frames do local frame = frames[frameNum] if frame[1] then local subframeNum = 1 while subframeNum <= #frame do local subframe = frame[subframeNum] if subframe.name ~= '' then local alias = frame.aliasReference and frame.aliasReference[subframeNum] subframeNum = subframeNum + addItem(items, arg, subframe, alias) else subframeNum = subframeNum + 1 end end frameNum = frameNum + 1 elseif frame.name ~= '' then local alias = frames.aliasReference and frames.aliasReference[frameNum] frameNum = frameNum + addItem(items, arg, frame, alias) else frameNum = frameNum + 1 end end if #items > 0 then itemSets[i] = items i = i + 1 end end end return itemSets end function m.makeItemLinks(itemSets, removePrefixes) local links = {} for i, itemSet in ipairs(itemSets) do local linkSet = {} for i2, item in ipairs(itemSet) do local name = item.name if removePrefixes then name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper) end linkSet[i2] = m.prefixedLink(name, item.mod) end links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>') end return table.concat(links, i18n.separator .. '<br>') end function m.makeHeader(recipeType, class, showName, showDescription, multirow) class = class or '' local nameCell = '' if showName then nameCell = i18n.headingName .. '!!' end local descriptionCell = '' if showDescription then descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription end local recipeAttribs = '' if multirow then class = 'sortable collapsible ' .. class recipeAttribs = '|class="unsortable"' end local header = table.concat({ '{| class="wikitable ' .. class .. '" data-description="' .. (i18n.tableDescription or ""):gsub('%$1', recipeType or "") .. '"', '!' .. nameCell .. i18n.headingIngredients .. '!!' .. recipeAttribs .. '|' .. i18n.headingRecipe:gsub('%$1', recipeType or "") .. descriptionCell }, '\n') return header end function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming) local cell = {} if name then cell[1] = name else cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true) end if upcoming then if upcoming:find('%[%[') then cell[2] = '(' .. upcoming .. ')' else cell[2] = '([[' .. upcoming .. ']])' end end return table.concat(cell, '<br>') end function m.makeIngredientsCell(ingredients, itemSets) return ingredients or m.makeItemLinks(itemSets) end function m.table(args) args = args or {} local out = {} -- Default values for arguments local showHead = args.showHead ~= nil and args.showHead or true local showFoot = args.showFoot ~= nil and args.showFoot or true local showName = args.showName ~= nil and args.showName or true local showDescription = args.showDescription ~= nil and args.showDescription or true local multirow = args.multirow ~= nil and args.multirow or true if showHead then out[1] = m.makeHeader(args.type, args.class, showName, showDescription, multirow) end local ingredientArgVals = args.ingredientArgs or {} local outputArgs = args.outputArgs or {} local parsedRecipeArgs = args if not args.parsed then parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs) end local cells = {} if showName then cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming) end local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs) cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets) -- Call the UI function if provided and valid if args.uiFunc then local uiModule = require(i18n.moduleUi) local uiFunc = uiModule[args.uiFunc] if uiFunc and type(uiFunc) == "function" then cells[#cells + 1] = '|style="padding:1px"|' .. uiFunc(args) else error("UI function '" .. args.uiFunc .. "' not found or not a function in module '" .. i18n.moduleUi .. "'") end end if showDescription then cells[#cells + 1] = '|' .. (args.description or '') end out[#out + 1] = table.concat(cells, '\n') out[#out + 1] = args.showFoot and '|}' or '' return table.concat(out, '\n|-\n'), ingredientsItemSets end return m 8700530ed7a3314feefef6f00f219b1e9ea8ebe0 130 129 2024-05-02T17:03:18Z Axxyyy 2 Scribunto text/plain local p = {} local i18n = { colored = 'Colored', coloredDyes = { 'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Dandelion Yellow', 'Lime Dye', 'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye', 'Lapis Lazuli', 'Cocoa Beans', 'Cactus Green', 'Rose Red', 'Ink Sac', }, categoryIngredientUsage = 'Category:Recipe using $1', categoryRecipeType = 'Category:$1 recipe', categoryUpcoming = 'Category:Upcoming', itemBlockOfQuartz = 'Block of Quartz', itemBoneMeal = 'Bone Meal', itemBrownMushroom = 'Brown Mushroom', itemCharcoal = 'Charcoal', itemCoal = 'Coal', itemColoredDye = 'Colored Dye', itemDye = 'Dye', itemMushroom = 'Mushroom', itemQuartzBlock = 'Quartz Block', itemRedMushroom = 'Red Mushroom', itemStone = 'Stone', moduleArgs = [[Module:ProcessArgs]], moduleRecipe = [[Module:Recipe table]], moduleSlot = [[Module:Inventory slot]], stoneVariants = { 'Stone', 'Andesite', 'Granite', 'Diorite' }, type = 'Crafting', variantPages = { 'Andesite', 'Banner', 'Bed', 'Diorite', 'Firework Star', 'Granite', 'Pressure Plate', 'Sand', 'Sandstone', 'Shield', 'Slab', 'Stained Glass Pane', 'Stained Glass', 'Stairs', 'Stone Bricks', 'Wood Planks', 'Wood', 'Wool', }, } p.i18n = i18n local slot = require( i18n.moduleSlot ) local recipeTable = require( i18n.moduleRecipe ).table local cArgVals = { 'A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3' } p.cArgVals = cArgVals function p.table( f ) local args = f if f == mw.getCurrentFrame() then args = require( i18n.moduleArgs ).merge( true ) else f = mw.getCurrentFrame() end -- Automatic shapeless positioning if args[1] then args.shapeless = 1 if args[7] then args.A1 = args[1] args.B1 = args[2] args.C1 = args[3] args.A2 = args[4] args.B2 = args[5] args.C2 = args[6] if args[8] then -- ◼◼◼ ◼◼◼ -- ◼◼◼ OR ◼◼◼ -- ◼◼◼ ◼◼◻ args.A3 = args[7] args.B3 = args[8] args.C3 = args[9] if args[9] then local identical = true for i = 1, 8 do if args[i] ~= args[i + 1] then identical = false break end end if identical then args.shapeless = nil end end else -- ◼◼◼ -- ◼◼◼ -- ◻◼◻ args.B3 = args[7] end elseif args[2] then args.A2 = args[1] args.B2 = args[2] if args[5] then -- ◻◻◻ ◻◻◻ -- ◼◼◼ OR ◼◼◼ -- ◼◼◼ ◼◼◻ args.C2 = args[3] args.A3 = args[4] args.B3 = args[5] args.C3 = args[6] elseif args[4] then -- ◻◻◻ -- ◼◼◻ -- ◼◼◻ args.A3 = args[3] args.B3 = args[4] else -- ◻◻◻ ◻◻◻ -- ◼◼◻ OR ◼◼◻ -- ◻◼◻ ◻◻◻ args.B3 = args[3] end else -- ◻◻◻ -- ◻◼◻ -- ◻◻◻ args.B2 = args[1] args.shapeless = nil end for i = 1, 9 do args[i] = nil end end -- Create recipe table, and list of ingredients local out, ingredientSets = recipeTable( args, { uiFunc = 'craftingTable', type = i18n.type, ingredientArgs = cArgVals, outputArgs = { 'Output' }, } ) local title = mw.title.getCurrentTitle() if args.nocat == '1' or title.namespace ~= 0 or title.isSubpage then return out end local categories = {} local cI = 1 if args.upcoming then categories[cI] = '[[' .. i18n.categoryUpcoming .. ']]' cI = cI + 1 end if args.type then categories[cI] = '[[' .. i18n.categoryRecipeType:gsub( '%$1', args.type ) .. ']]' cI = cI + 1 end if args.ignoreusage ~= '1' then -- Create ingredient categories for DPL local usedNames = {} for _, ingredientSet in pairs( ingredientSets ) do for _, ingredient in pairs( ingredientSet ) do local name = ingredient.name if not ingredient.mod and not usedNames[name] and name ~= title.text then -- List each dye individually as they have their own pages if name == slot.i18n.prefixes.any .. ' ' .. i18n.itemDye or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemDye or name == slot.i18n.prefixes.any .. ' ' .. i18n.itemColoredDye or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemColoredDye then if not name:find( i18n.colored ) then categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', i18n.itemBoneMeal ) .. ']]' cI = cI + 1 usedNames[i18n.itemBoneMeal] = true end for _, dye in pairs( i18n.coloredDyes ) do categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', dye ) .. ']]' cI = cI + 1 usedNames[dye] = true end -- List stone variants individually as they have their own pages elseif name == slot.i18n.prefixes.any .. ' ' .. i18n.itemStone or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemStone then for _, stone in pairs( i18n.stoneVariants ) do categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', stone ) .. ']]' cI = cI + 1 usedNames[stone] = true end else -- Merge item variants which use a single page if name == slot.i18n.prefixes.any .. ' ' .. i18n.itemMushroom or name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemMushroom or name == i18n.itemRedMushroom or name == i18n.itemBrownMushroom then name = i18n.itemMushroom elseif name == i18n.itemCharcoal then name = i18n.itemCoal elseif name:find( ' ' .. i18n.itemQuartzBlock .. '$' ) then name = i18n.itemBlockOfQuartz else for _, variant in pairs( i18n.variantPages ) do if name:find( ' ' .. variant .. '$' ) then name = variant break end end -- Remove prefixes for _, prefix in pairs( slot.i18n.prefixes ) do if name:find( '^' .. prefix .. ' ' ) then name = name:gsub( '^' .. prefix .. ' ', '' ) break end end end if not usedNames[name] then categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', name ) .. ']]' cI = cI + 1 usedNames[name] = true end end end end end end return out, table.concat( categories, '' ) end return p ac086ea676edeb0c5df6f89488b0b33c9cf3cded Module:Grid 828 74 131 2024-05-02T17:17:31Z Axxyyy 2 Created page with "local p = {} -- Individual cell function p.cell( f ) local args = f.args or f if f == mw.getCurrentFrame() and args[1] == nil then args = f:getParent().args end args[1] = mw.text.trim( args[1] or '' ) if not args.noalias then -- Comment this next line out if you're not using aliases local aliases = mw.loadData( 'Module:Grid/Aliases' ) local modAliases = args.modaliases or '' if modAliases ~= '' then modAliases = mw.loadData( 'Module:' .. modAlias..." Scribunto text/plain local p = {} -- Individual cell function p.cell( f ) local args = f.args or f if f == mw.getCurrentFrame() and args[1] == nil then args = f:getParent().args end args[1] = mw.text.trim( args[1] or '' ) if not args.noalias then -- Comment this next line out if you're not using aliases local aliases = mw.loadData( 'Module:Grid/Aliases' ) local modAliases = args.modaliases or '' if modAliases ~= '' then modAliases = mw.loadData( 'Module:' .. modAliases ) else modAliases = nil end if aliases or modAliases then local frames = {} for frame in mw.text.gsplit( args[1], '%s*;%s*' ) do local frameParts = p.getParts( frame, args.mod ) local id = frameParts.name if frameParts.mod then id = frameParts.mod .. ':' .. id end local alias if modAliases and modAliases[id] then alias = modAliases[id] elseif aliases and aliases[id] then alias = aliases[id] end if alias then table.insert( frames, p.expandAlias( frameParts, alias ) ) else table.insert( frames, frame ) end end args[1] = table.concat( frames, ';' ) end end local animated = args[1]:find( ';' ) local pageName = mw.title.getCurrentTitle().subpageText local class = args.class or '' local imgClass = args.imgclass or '' local style = args.style or '' local align = args.align or '' local numStyle = args.numstyle or '' local cell = {} for frame in mw.text.gsplit( args[1], '%s*;%s*' ) do if frame == '' then if animated then table.insert( cell, '<span class="item"><br></span>' ) else table.insert( cell, '<br>' ) end else local parts = p.getParts( frame, args.mod ) local tooltipTitle = parts.title local mod = parts.mod local name = parts.name local num = parts.num local tooltipDesc = parts.text local img if mod then img = name .. ' (' .. mod .. ')' else img = name end local link = args.link or '' if link == '' then if name == pageName then link = 'none' elseif mod then link = 'Mods/' .. mod .. '/' .. name else link = name end end local title = args.title or '' if title == '' then if tooltipTitle then title = tooltipTitle:gsub( '&[0-9a-fk-or]', '' ) end if mw.text.trim( title ) == '' or link:lower() == 'none' or link ~= name:gsub( '%s%(.*', '' ) then title = name end end if not tooltipTitle and title:lower() == 'none' then tooltipTitle = 0 end local alt = img if title:lower() ~= 'none' then alt = title end if link:lower() == 'none' then link = '' end if title:lower() == 'none' then title = '' end local tooltip = '' if tooltipTitle then tooltip = ' data-minetip-title="' .. tooltipTitle .. '"' end if tooltipDesc then tooltip = tooltip .. ' data-minetip-text="' .. tooltipDesc .. '"' end local image = { '<span class="item ' .. imgClass .. '" title="' .. title .. '"' .. tooltip .. '>', '[[File:Grid ' .. img .. '.png|32x32px|link=' .. link .. '|alt=' .. alt .. ']]', '</span>', } image[1] = image[1]:gsub( ' title=""', '' ) image[2] = image[2]:gsub( '||', '|' ) if num and num > 1 and num < 1000 then if link ~= '' then num = '[[' .. link .. '|' .. num .. ']]' end if numStyle ~= '' then numStyle = ' style="' .. numStyle .. '"' end table.insert( image, 3, '<span class="number"' .. numStyle .. '>' .. num .. '</span>' ) end table.insert( cell, table.concat( image, '' ) ) end end if animated then cell[1] = cell[1]:gsub( 'class="item', 'class="item active' ) class = 'animated ' .. class end local styles = {} if align ~= '' then table.insert( styles, 'vertical-align:' .. align ) end if style ~= '' then table.insert( styles, style ) end if #styles > 0 then styles = ' style="' .. table.concat( styles, ';' ) .. '"' else styles = '' end local html = { '<span class="grid ' .. class .. '"' .. styles .. '>', table.concat( cell, '' ), '</span>' } if ( args.default or '' ) ~= '' then local defaultClass = '' if animated then defaultClass = ' skip' end table.insert( html, 2, '<span class="default-item' .. defaultClass .. '">[[File:Grid ' .. args.default .. '.png|32x32px|alt=|link=]]</span>' ) end html = table.concat( html, '' ):gsub( ' "', '"' ) return html end function p.expandAlias( frameParts, alias ) -- If the frame has no parts, we can just return the alias as-is if not frameParts.title and not frameParts.mod and not frameParts.num and not frameParts.text then return alias end local expandedFrames = {} for aliasFrame in mw.text.gsplit( alias, '%s*;%s*' ) do local aliasParts = p.getParts( aliasFrame ) aliasParts.title = frameParts.title or aliasParts.title or '' aliasParts.mod = frameParts.mod or aliasParts.mod or 'Minecraft' aliasParts.num = frameParts.num or aliasParts.num or '' aliasParts.text = frameParts.text or aliasParts.text or '' table.insert( expandedFrames, string.format( '[%s]%s:%s,%s[%s]', aliasParts.title, aliasParts.mod, aliasParts.name, aliasParts.num, aliasParts.text ) ) end return table.concat( expandedFrames, ';' ) end function p.getParts( frame, mod ) local parts = {} parts.title = frame:match( '^%[%s*([^%]]+)%s*%]' ) parts.mod = mw.text.trim( frame:match( '([^:%]]+):' ) or mod or '' ) local vanilla = { v = 1, vanilla = 1, mc = 1, minecraft = 1 } if parts.mod == '' or vanilla[mw.ustring.lower( parts.mod )] then parts.mod = nil end local nameStart = ( frame:find( ':' ) or frame:find( '%]' ) or 0 ) + 1 if nameStart - 1 == #frame then nameStart = 1 end parts.name = mw.text.trim( frame:sub( nameStart, ( frame:find( '[,%[]', nameStart ) or 0 ) - 1 ) ) parts.num = math.floor( frame:match( ',%s*(%d+)' ) or 0 ) if parts.num == 0 then parts.num = nil end parts.text = frame:match( '%[%s*([^%]]+)%s*%]$' ) return parts end --- GUI variants; called directly to avoid the overhead of a bunch of #invoke calls per GUI -- Crafting table function p.craftingTable( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args end local arrow = 'Arrow (small)' local shapeless = '' if args.arrow or '' ~= '' then arrow = args.arrow .. ' (' .. args.Mod .. ')' end if args.shapeless or '' ~= '' then shapeless = '<span title="This recipe is shapeless; the inputs may be placed in any arrangement in the crafting grid.">[[File:Grid layout Shapeless.png|link=]]</span>' elseif args.fixed or '' ~= '' then local notFixed = '' if args.notfixed or '' ~= '' then notFixed = '; except for ' .. args.notfixed .. ', which can go anywhere' end shapeless = '<span title="This recipe is fixed, the input arrangement may not be moved or mirrored' .. notFixed .. '.">[[File:Grid layout Fixed.png|link=]]</span>' end local html = { '{| class="grid-Crafting_Table" cellpadding="0" cellspacing="0"', '| ' .. p.cell{ args.A1, mod = args.Mod, link = args.A1link, title = args.A1title }, '| ' .. p.cell{ args.B1, mod = args.Mod, link = args.B1link, title = args.B1title }, '| ' .. p.cell{ args.C1, mod = args.Mod, link = args.C1link, title = args.C1title }, '| rowspan="2" class="arrow" | [[File:Grid layout ' .. arrow .. '.png|link=]]', '| rowspan="3" | ' .. p.cell{ args.Output, mod = args.Mod, link = args.Olink, title = args.Otitle, class = 'output' }, '|-', '| ' .. p.cell{ args.A2, mod = args.Mod, link = args.A2link, title = args.A2title }, '| ' .. p.cell{ args.B2, mod = args.Mod, link = args.B2link, title = args.B2title }, '| ' .. p.cell{ args.C2, mod = args.Mod, link = args.C2link, title = args.C2title }, '|-', '| ' .. p.cell{ args.A3, mod = args.Mod, link = args.A3link, title = args.A3title }, '| ' .. p.cell{ args.B3, mod = args.Mod, link = args.B3link, title = args.B3title }, '| ' .. p.cell{ args.C3, mod = args.Mod, link = args.C3link, title = args.C3title }, '| class="shapeless" | ' .. shapeless, '|}' } return table.concat( html, '\n' ); end -- Furnace function p.furnace( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args end args = require( 'Module:ProcessArgs' ).norm( args ) local progress = 'Furnace Progress' local burning = ' (in-active)' local smelting = burning local fuelUsage = 'Fire' if args.Progress then progress = args.Progress .. ' Progress' if args.Mod then progress = progress .. ' (' .. args.Mod .. ')' end end if args.Input and args.Fuel then burning = '' if args.Output then smelting = '' end end if args.FuelUsage then fuelUsage = args.FuelUsage if args.Mod then fuelUsage = fuelUsage .. ' (' .. args.Mod .. ')' end end local html = { '{| class="grid-Furnace" cellpadding="0" cellspacing="0"', '| ' .. p.cell{ args.Input, mod = args.Mod, link = args.Ilink, title = args.Ititle }, '| rowspan="3" class="arrow" | [[File:Grid layout ' .. progress .. smelting .. '.png|link=]]', '| rowspan="3" class="output" | ' .. p.cell{ args.Output, mod = args.Mod, link = args.Olink, title = args.Otitle, class = 'output' }, '|-', '| [[File:Grid layout ' .. fuelUsage .. burning .. '.png|link=]]', '|-', '| ' .. p.cell{ args.Fuel, mod = args.Mod, link = args.Flink, title = args.Ftitle }, '|}' } return table.concat( html, '\n' ); end -- Brewing Stand function p.brewingStand( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args end args = require( 'Module:ProcessArgs' ).norm( args ) local inactive = ' (In-active)' if args.Input and ( args.Output1 or args.Output2 or args.Output3 ) then inactive = '' end local html = { '<div class="grid-Brewing_Stand">', '{| cellpadding="0" cellspacing="0"', '| class="bubbles" | [[File:Grid layout Brewing Bubbles.gif|link=]]', '| class="input" | ' .. p.cell{ args.Input, mod = args.Mod, link = args.Ilink, title = args.Ititle }, '| [[File:Grid layout Brewing Arrow' .. inactive .. '.png|link=]]', '|-', '| class="output1" | ' .. p.cell{ args.Output1, mod = args.Mod, link = args.O1link, title = args.O1title, default = 'layout Brewing Empty' }, '| class="output2" | ' .. p.cell{ args.Output2, mod = args.Mod, link = args.O2link, title = args.O2title, default = 'layout Brewing Empty' }, '| class="output3" | ' .. p.cell{ args.Output3, mod = args.Mod, link = args.O3link, title = args.O3title, default = 'layout Brewing Empty' }, '|-', '| class="paths" colspan="3" | [[File:Grid layout Brewing Paths.png|link=]]', '|}', '</div>' } return table.concat( html, '\n' ); end return p 6b49a6669a519fd2f93ce04ed2b5fc4e2b2df6d4 Template:Grid/Crafting Table/doc 10 75 132 2024-05-02T17:26:33Z Axxyyy 2 Created page with "{{doc/start}} {{lua|Grid}} This template is used to create a grid that looks similar to the [[Crafting Table|Crafting Table's]] GUI screen. See [[Template:Grid]] for basic grid usage, this documentation page will cover additional or different functions. Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead. __TOC__ == Usage == <pre style="max-width: 250px">{{Grid/Crafting Table |A1= |B1=..." wikitext text/x-wiki {{doc/start}} {{lua|Grid}} This template is used to create a grid that looks similar to the [[Crafting Table|Crafting Table's]] GUI screen. See [[Template:Grid]] for basic grid usage, this documentation page will cover additional or different functions. Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead. __TOC__ == Usage == <pre style="max-width: 250px">{{Grid/Crafting Table |A1= |B1= |C1= |A2= |B2= Oak Wood Planks |C2= |A3= |B3= Oak Wood Planks |C3= |Output= Stick,4 }}</pre> ;produces: {{Grid/Crafting Table |A1= |B1= |C1= |A2= |B2= Oak Wood Planks |C2= |A3= |B3= Oak Wood Planks |C3= |Output= Stick,4 }} Use the [[#Available images|available images]] listed below. === Shapeless === If a recipe is shapeless, add shapeless=1 to the template, which will display an icon which when hovered over explains what a shapeless recipe is. <pre style="max-width: 236px">{{Grid/Crafting Table |shapeless= 1 |A1= |B1= Blaze Powder |C1= |A2= |B2= Coal,Charcoal |C2= |A3= |B3= Gunpowder |C3= |Output= Fire Charge,3 }}</pre> ;produces: {{Grid/Crafting Table |shapeless= 1 |A1= |B1= Blaze Powder |C1= |A2= |B2= Coal,Charcoal |C2= |A3= |B3= Gunpowder |C3= |Output= Fire Charge,3 }} The shapeless parameter does not support animation, so shapeless and non-shapeless recipes cannot be combined. === Animated === To make the grid animate, you make a list of blocks and objects you want to show, separated by semi-colons. <pre style="max-width: 616px">{{Grid/Crafting Table |A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli |A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli |A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli |Output= Lapis Lazuli,9; Lapis Lazuli Block }}</pre> ;produces: {{Grid/Crafting Table |A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli |A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli |A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli |Output= Lapis Lazuli,9; Lapis Lazuli Block }} <pre style="max-width: 602px">{{Grid/Crafting Table |A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block }}</pre> ;produces: {{Grid/Crafting Table |A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block }} === Mods === Mod images and normal images can be combined just like in a single grid. When uploading mod images, they must have the mod page name in parenthesis at the end. For example Fancystone (FancyPack). The Mod parameter can be used to set a default used for all parameters, this is best used when all items in the crafting table are modded items, or if the mod name is long and using the vanilla (v) parameter for the vanilla items in the table would be quicker. <pre style="max-width: 848px">{{Grid/Crafting Table |A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust |A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit |A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone |Output= IndustrialCraft:Advanced Circuit,2 }}</pre> ;or <pre style="max-width: 656px">{{Grid/Crafting Table |Mod= IndustrialCraft |A1= v:Redstone Dust |B1= Cable |C1= vanilla:Glowstone Dust |A2= Electronic Circuit |B2= V:Lapis Lazuli Block |C2= Electronic Circuit |A3= Vanilla:Glowstone Dust |B3= Cable |C3= v:Redstone Dust |Output= Advanced Circuit,2 }}</pre> ;produces: {{Grid/Crafting Table |A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust |A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit |A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone |Output= IndustrialCraft:Advanced Circuit,2 }} Note the links of the vanilla Minecraft items, compared to the IndustrialCraft items. Animation is fully supported between mod and vanilla items. {{loadPage|Template:Grid/Available images|Available images}} == See also == {{Grid/See also}} {{doc/end}} fac076b7534f59ae1e5b6d86304b79bb325b6e9d Module:Grid/Aliases 828 77 134 2024-05-02T17:29:13Z Axxyyy 2 Created page with "return { ['Any fuel'] = 'Coal; Charcoal; Oak Wood; Oak Wood Planks', ['Any Wood'] = 'Oak Wood; Spruce Wood; Birch Wood; Jungle Wood; Acacia Wood; Dark Oak Wood', ['Any Wood Planks'] = 'Oak Wood Planks; Spruce Wood Planks; Birch Wood Planks; Jungle Wood Planks; Acacia Wood Planks; Dark Oak Wood Planks', ['Any Wood Stairs'] = 'Oak Wood Stairs; Spruce Wood Stairs; Birch Wood Stairs; Jungle Wood Stairs; Acacia Wood Stairs; Dark Oak Wood Stairs', ['Any Wood Slab'] = '..." Scribunto text/plain return { ['Any fuel'] = 'Coal; Charcoal; Oak Wood; Oak Wood Planks', ['Any Wood'] = 'Oak Wood; Spruce Wood; Birch Wood; Jungle Wood; Acacia Wood; Dark Oak Wood', ['Any Wood Planks'] = 'Oak Wood Planks; Spruce Wood Planks; Birch Wood Planks; Jungle Wood Planks; Acacia Wood Planks; Dark Oak Wood Planks', ['Any Wood Stairs'] = 'Oak Wood Stairs; Spruce Wood Stairs; Birch Wood Stairs; Jungle Wood Stairs; Acacia Wood Stairs; Dark Oak Wood Stairs', ['Any Wood Slab'] = 'Oak Wood Slab; Spruce Wood Slab; Birch Wood Slab; Jungle Wood Slab; Acacia Wood Slab; Dark Oak Wood Slab', ['Any Wool'] = 'Orange Wool; Magenta Wool; Light Blue Wool; Yellow Wool; Lime Wool; Pink Wool; Gray Wool; Light Gray Wool; Cyan Wool; Purple Wool; Blue Wool; Brown Wool; Green Wool; Red Wool; Black Wool', ['Any Carpet'] = 'White Carpet; Orange Carpet; Magenta Carpet; Light Blue Carpet; Yellow Carpet; Lime Carpet; Pink Carpet; Gray Carpet; Light Gray Carpet; Cyan Carpet; Purple Carpet; Blue Carpet; Brown Carpet; Green Carpet; Red Carpet; Black Carpet', ['Any Dye'] = 'Orange Dye; Magenta Dye; Light Blue Dye; Dandelion Yellow; Lime Dye; Pink Dye; Gray Dye; Light Gray Dye; Cyan Dye; Purple Dye; Lapis Lazuli; Cocoa Beans; Cactus Green; Rose Red; Ink Sac', ['Any Sandstone'] = 'Sandstone; Chiseled Sandstone; Smooth Sandstone', ['Any Quartz Block'] = 'Block of Quartz; Chiseled Quartz Block; Pillar Quartz Block', ['Any Stone Bricks'] = 'Stone Bricks; Mossy Stone Bricks; Cracked Stone Bricks; Chiseled Stone Brick', ['Any Stained Glass'] = 'White Stained Glass; Orange Stained Glass; Magenta Stained Glass; Light Blue Stained Glass; Yellow Stained Glass; Lime Stained Glass; Pink Stained Glass; Gray Stained Glass; Light Gray Stained Glass; Cyan Stained Glass; Purple Stained Glass; Blue Stained Glass; Brown Stained Glass; Green Stained Glass; Red Stained Glass; Black Stained Glass', ['Any Stained Glass Pane'] = 'White Stained Glass Pane; Orange Stained Glass Pane; Magenta Stained Glass Pane; Light Blue Stained Glass Pane; Yellow Stained Glass Pane; Lime Stained Glass Pane; Pink Stained Glass Pane; Gray Stained Glass Pane; Light Gray Stained Glass Pane; Cyan Stained Glass Pane; Purple Stained Glass Pane; Blue Stained Glass Pane; Brown Stained Glass Pane; Green Stained Glass Pane; Red Stained Glass Pane; Black Stained Glass Pane', ['Any Stained Clay'] = 'White Stained Clay; Orange Stained Clay; Magenta Stained Clay; Light Blue Stained Clay; Yellow Stained Clay; Lime Stained Clay; Pink Stained Clay; Gray Stained Clay; Light Gray Stained Clay; Cyan Stained Clay; Purple Stained Clay; Blue Stained Clay; Brown Stained Clay; Green Stained Clay; Red Stained Clay; Black Stained Clay', ['Any Firework Star'] = 'White Firework Star; Orange Firework Star; Magenta Firework Star; Light Blue Firework Star; Yellow Firework Star; Lime Firework Star; Pink Firework Star; Gray Firework Star; Light Gray Firework Star; Cyan Firework Star; Purple Firework Star; Blue Firework Star; Brown Firework Star; Green Firework Star; Red Firework Star; Black Firework Star', ['Golden Apple'] = '[&b]Golden Apple', ['Enchanted Golden Apple'] = '[&d]Golden Apple', ['Clay (block)'] = '[Clay]Clay (block)', ['End Portal (block)'] = '[End Portal]End Portal (block)', ['Snow (cover)'] = '[Snow]Snow (cover)', -- Added for ProjectRed ['Any Illumar'] = 'White Illumar; Orange Illumar; Magenta Illumar; Light Blue Illumar; Yellow Illumar; Lime Illumar; Pink Illumar; Grey Illumar; Light Grey Illumar; Cyan Illumar; Purple Illumar; Blue Illumar; Brown Illumar; Green Illumar; Red Illumar; Black Illumar', ['Any Lamp'] = 'White Lamp; Orange Lamp; Magenta Lamp; Light Blue Lamp; Yellow Lamp; Lime Lamp; Pink Lamp; Grey Lamp; Light Grey Lamp; Cyan Lamp; Purple Lamp; Blue Lamp; Brown Lamp; Green Lamp; Red Lamp; Black Lamp', ['Any Inverted Lamp'] = 'Inverted White Lamp; Inverted Orange Lamp; Inverted Magenta Lamp; Inverted Light Blue Lamp; Inverted Yellow Lamp; Inverted Lime Lamp; Inverted Pink Lamp; Inverted Grey Lamp; Inverted Light Grey Lamp; Inverted Cyan Lamp; Inverted Purple Lamp; Inverted Blue Lamp; Inverted Brown Lamp; Inverted Green Lamp; Inverted Red Lamp; Inverted Black Lamp', ['Any Stained Sapling'] = 'White Stained Sapling; Orange Stained Sapling; Magenta Stained Sapling; Light Blue Stained Sapling; Yellow Stained Sapling; Lime Stained Sapling; Pink Stained Sapling; Grey Stained Sapling; Light Grey Stained Sapling; Cyan Stained Sapling; Purple Stained Sapling; Blue Stained Sapling; Brown Stained Sapling; Green Stained Sapling; Red Stained Sapling; Black Stained Sapling', ['Any Lantern'] = 'White Lantern; Orange Lantern; Magenta Lantern; Light Blue Lantern; Yellow Lantern; Lime Lantern; Pink Lantern; Grey Lantern; Light Grey Lantern; Cyan Lantern; Purple Lantern; Blue Lantern; Brown Lantern; Green Lantern; Red Lantern; Black Lantern', ['Any Inverted Lantern'] = 'Inverted White Lantern; Inverted Orange Lantern; Inverted Magenta Lantern; Inverted Light Blue Lantern; Inverted Yellow Lantern; Inverted Lime Lantern; Inverted Pink Lantern; Inverted Grey Lantern; Inverted Light Grey Lantern; Inverted Cyan Lantern; Inverted Purple Lantern; Inverted Blue Lantern; Inverted Brown Lantern; Inverted Green Lantern; Inverted Red Lantern; Inverted Black Lantern', ['Any Illumar Button'] = 'White Illumar Button; Orange Illumar Button; Magenta Illumar Button; Light Blue Illumar Button; Yellow Illumar Button; Lime Illumar Button; Pink Illumar Button; Grey Illumar Button; Light Grey Illumar Button; Cyan Illumar Button; Purple Illumar Button; Blue Illumar Button; Brown Illumar Button; Green Illumar Button; Red Illumar Button; Black Illumar Button', ['Any Cage Lamp'] = 'White Cage Lamp; Orange Cage Lamp; Magenta Cage Lamp; Light Blue Cage Lamp; Yellow Cage Lamp; Lime Cage Lamp; Pink Cage Lamp; Grey Cage Lamp; Light Grey Cage Lamp; Cyan Cage Lamp; Purple Cage Lamp; Blue Cage Lamp; Brown Cage Lamp; Green Cage Lamp; Red Cage Lamp; Black Cage Lamp', ['Any Inverted Cage Lamp'] = 'Inverted White Cage Lamp; Inverted Orange Cage Lamp; Inverted Magenta Cage Lamp; Inverted Light Blue Cage Lamp; Inverted Yellow Cage Lamp; Inverted Lime Cage Lamp; Inverted Pink Cage Lamp; Inverted Grey Cage Lamp; Inverted Light Grey Cage Lamp; Inverted Cyan Cage Lamp; Inverted Purple Cage Lamp; Inverted Blue Cage Lamp; Inverted Brown Cage Lamp; Inverted Green Cage Lamp; Inverted Red Cage Lamp; Inverted Black Cage Lamp', ['Any Fixture'] = 'White Fixture; Orange Fixture; Magenta Fixture; Light Blue Fixture; Yellow Fixture; Lime Fixture; Pink Fixture; Grey Fixture; Light Grey Fixture; Cyan Fixture; Purple Fixture; Blue Fixture; Brown Fixture; Green Fixture; Red Fixture; Black Fixture', ['Any Inverted Fixture'] = 'Inverted White Fixture; Inverted Orange Fixture; Inverted Magenta Fixture; Inverted Light Blue Fixture; Inverted Yellow Fixture; Inverted Lime Fixture; Inverted Pink Fixture; Inverted Grey Fixture; Inverted Light Grey Fixture; Inverted Cyan Fixture; Inverted Purple Fixture; Inverted Blue Fixture; Inverted Brown Fixture; Inverted Green Fixture; Inverted Red Fixture; Inverted Black Fixture', } cfb5f40c7bc07491ef1dd969afe6a458bc8a5753 File:Grid layout Arrow (small).png 6 78 135 2024-05-02T17:30:25Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Crafting GUI.png 6 79 136 2024-05-02T17:42:08Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Crafting2x2.png 6 80 137 2024-05-02T17:42:46Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Grid layout None (small).png 6 81 138 2024-05-02T17:44:09Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Grid layout Shapeless.png 6 82 139 2024-05-02T17:44:25Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Grid layout None (large).png 6 83 140 2024-05-02T17:45:05Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Grid Blaze Powder.png 6 84 141 2024-05-02T17:49:35Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Crafting3x3.png 6 85 142 2024-05-02T18:12:09Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Grid/Crafting Table 10 86 143 2024-05-02T18:17:03Z Axxyyy 2 Created page with "<includeonly>{{#invoke:grid|craftingTable}}</includeonly> <noinclude> {{/doc}} </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:grid|craftingTable}}</includeonly> <noinclude> {{/doc}} </noinclude> 540ec2d363d68f6b5dcce0e04f9d9435ea61be8e Template:Slot 10 87 144 2024-05-02T18:40:11Z Axxyyy 2 Redirected page to [[Template:Inventory slot]] wikitext text/x-wiki #REDIRECT [[Template:Inventory slot]] e56425bdc12fe49f9e3f05434db183e3994cf626 Module:InfoBox 828 88 145 2024-05-02T22:26:41Z Axxyyy 2 Created page with "local p = {} function p.infobox( f ) local args = require( 'Module:ProcessArgs' ).merge( true ) local title = args.title or mw.title.getCurrentTitle().baseText local imageArea = args.imagearea if not imageArea and imageArea ~= 'none' then local images = {} local invImages = {} local defaultImageSize = args.defaultimagesize or '150px' args.image1 = args.image1 or args.image or 'title' args.image1size = args.image1size or args.imagesize args.invimage1 = a..." Scribunto text/plain local p = {} function p.infobox( f ) local args = require( 'Module:ProcessArgs' ).merge( true ) local title = args.title or mw.title.getCurrentTitle().baseText local imageArea = args.imagearea if not imageArea and imageArea ~= 'none' then local images = {} local invImages = {} local defaultImageSize = args.defaultimagesize or '150px' args.image1 = args.image1 or args.image or 'title' args.image1size = args.image1size or args.imagesize args.invimage1 = args.invimage1 or args.invimage or 'title' local imgCount = {} local invImgCount = {} local grid for k, v in pairs( args ) do if type( k ) == 'string' then local image, num = k:match( '^(image)(%d+)$' ) local invImage, invNum = k:match( '^(invimage)(%d+)$' ) if v:lower() ~= 'none' then if image then table.insert( imgCount, tonumber( num ) ) elseif invImage then table.insert( invImgCount, tonumber( invNum ) ) end end end end table.sort( imgCount ) local animate for k, v in ipairs( imgCount ) do local image = args['image' .. v] local size = args['image' .. v .. 'size'] or defaultImageSize if image == 'title' then local imageTitle = mw.title.new( 'File:' .. title .. '.png' ) if imageTitle and imageTitle.exists then image = '[[File:' .. title .. '.png|' .. size .. ']]' elseif mw.title.getCurrentTitle().namespace == 0 then image = '[[File:No image.svg|' .. size .. '|link=File:' .. title .. '.png|Upload ' .. title .. '.png]]' else image = '[[File:No image.svg|' .. size .. '|link=]]' end elseif image:match( ';' ) then if not animate then animate = require( 'Module:Animate' ).animate end image = animate{ image, size } else image = '[[File:' .. image .. '|' .. size .. ']]' end table.insert( images, '<div>' .. image .. '</div>' ) end images = table.concat( images, '\n' ) if #invImgCount > 0 then table.sort( invImgCount ) local grid for k, v in ipairs( invImgCount ) do local image = args['invimage' .. v] if image == 'title' then local imageTitle = mw.title.new( 'File:Grid ' .. title .. '.png' ) if imageTitle and imageTitle.exists then image = title else image = false end end if image then if not grid then grid = require( 'Module:Grid' ).cell end table.insert( invImages, grid{ image, link = 'none' } ) end end if #invImages > 0 then invImages = '<div class="infobox-invimages">' .. table.concat( invImages, '' ) .. '</div>' else invImages = '' end else invImages = '' end if images ~= '' or invImages ~= '' then imageArea = images .. '\n' .. invImages else imageArea = 'none' end end if imageArea and imageArea ~= 'none' then imageArea = '<div class="infobox-imagearea">' .. imageArea .. '</div>' else imageArea = '' end local footer = args.footer if footer then footer = '| class="infobox-footer" colspan="2" | ' .. footer end local html = { '<div class="notaninfobox">', '<div class="infobox-title mcwiki-header">' .. title .. '</div>', imageArea, '{| class="infobox-rows" cellspacing="1" cellpadding="4"', '|-', args.rows or '', footer or '', '|}', '</div>' } return table.concat( html, '\n' ) end return p 731643c30d4b33c55af8931cbff7f233756f6af4 Template:Item 10 89 146 2024-05-02T22:28:14Z Axxyyy 2 Created page with "<includeonly>{{#invoke:infobox|infobox | rows = {{infobox row|label=Type|field={{ #if: {{{type|}}} | {{{type}}} | ? }} }} {{#if: {{{otherosonly|}}} | {{infobox row|label=Only available in|field={{{otherosonly}}} }} }} {{infobox row|label=Durability|field={{ #if: {{{durability|}}} | {{{durability}}} | N/A }} }} {{infobox row|label=Renewable|field={{ #if: {{{renewable|}}} | {{{renewable}}} | ? }} }} {{infobox row|label=Stackable|field={{ #if: {{{stackable|}}} | {{{stackabl..." wikitext text/x-wiki <includeonly>{{#invoke:infobox|infobox | rows = {{infobox row|label=Type|field={{ #if: {{{type|}}} | {{{type}}} | ? }} }} {{#if: {{{otherosonly|}}} | {{infobox row|label=Only available in|field={{{otherosonly}}} }} }} {{infobox row|label=Durability|field={{ #if: {{{durability|}}} | {{{durability}}} | N/A }} }} {{infobox row|label=Renewable|field={{ #if: {{{renewable|}}} | {{{renewable}}} | ? }} }} {{infobox row|label=Stackable|field={{ #if: {{{stackable|}}} | {{{stackable}}} | ? }} }} {{#if: {{{multiplevers|}}} | {{infobox row|label=First appearances|field={{{multiplevers}}} }} | {{#if: {{{firstver|}}} | {{infobox row|label=First appearance|field={{version link|{{{firstver}}}}} }} }} }} {{#if: {{{multipledata|}}} | {{infobox row|label=[[Data values]]|field={{{multipledata}}} }} | {{#if: {{{data|}}} | {{infobox row|label=[[Data values|Data value]]|field={{data value|{{{data}}} }} }} }} }} {{#if: {{NAMESPACE}} | | {{#ifeq: {{lc: {{{nameid}}} }} | none | | {{infobox row|label=Name|field={{ #if: {{{nameid|}}} | {{{nameid}}} | {{lc: {{#replace: {{#if: {{{title|}}} | {{{title}}} | {{BASEPAGENAME}} }} || _ }} }} }}}} }} }} }}{{ #if: {{{nocat|}}}{{NAMESPACE}} || {{#if:{{{type|}}}|{{#ifeq:{{{type}}}|Items||[[Category:{{{type}}}]]}}}} {{#switch: {{lc: {{{renewable|}}} }} | yes = [[Category:Renewable resources]] | no = [[Category:Non-renewable resources]] | [[Category:Resources with invalid renewability]] }} }}</includeonly><noinclude> {{/doc}} [[Category:Infobox templates]] </noinclude> 31f71e672f52fc0fe9d3cbae95c077559ca70280 Module:Infobox 828 90 147 2024-05-02T22:29:12Z Axxyyy 2 Created page with "local p = {} function p.infobox( f ) local args = require( 'Module:ProcessArgs' ).merge( true ) local title = args.title or mw.title.getCurrentTitle().baseText local imageArea = args.imagearea if not imageArea and imageArea ~= 'none' then local images = {} local invImages = {} local defaultImageSize = args.defaultimagesize or '150px' args.image1 = args.image1 or args.image or 'title' args.image1size = args.image1size or args.imagesize args.invimage1 = a..." Scribunto text/plain local p = {} function p.infobox( f ) local args = require( 'Module:ProcessArgs' ).merge( true ) local title = args.title or mw.title.getCurrentTitle().baseText local imageArea = args.imagearea if not imageArea and imageArea ~= 'none' then local images = {} local invImages = {} local defaultImageSize = args.defaultimagesize or '150px' args.image1 = args.image1 or args.image or 'title' args.image1size = args.image1size or args.imagesize args.invimage1 = args.invimage1 or args.invimage or 'title' local imgCount = {} local invImgCount = {} local grid for k, v in pairs( args ) do if type( k ) == 'string' then local image, num = k:match( '^(image)(%d+)$' ) local invImage, invNum = k:match( '^(invimage)(%d+)$' ) if v:lower() ~= 'none' then if image then table.insert( imgCount, tonumber( num ) ) elseif invImage then table.insert( invImgCount, tonumber( invNum ) ) end end end end table.sort( imgCount ) local animate for k, v in ipairs( imgCount ) do local image = args['image' .. v] local size = args['image' .. v .. 'size'] or defaultImageSize if image == 'title' then local imageTitle = mw.title.new( 'File:' .. title .. '.png' ) if imageTitle and imageTitle.exists then image = '[[File:' .. title .. '.png|' .. size .. ']]' elseif mw.title.getCurrentTitle().namespace == 0 then image = '[[File:No image.svg|' .. size .. '|link=File:' .. title .. '.png|Upload ' .. title .. '.png]]' else image = '[[File:No image.svg|' .. size .. '|link=]]' end elseif image:match( ';' ) then if not animate then animate = require( 'Module:Animate' ).animate end image = animate{ image, size } else image = '[[File:' .. image .. '|' .. size .. ']]' end table.insert( images, '<div>' .. image .. '</div>' ) end images = table.concat( images, '\n' ) if #invImgCount > 0 then table.sort( invImgCount ) local grid for k, v in ipairs( invImgCount ) do local image = args['invimage' .. v] if image == 'title' then local imageTitle = mw.title.new( 'File:Grid ' .. title .. '.png' ) if imageTitle and imageTitle.exists then image = title else image = false end end if image then if not grid then grid = require( 'Module:Grid' ).cell end table.insert( invImages, grid{ image, link = 'none' } ) end end if #invImages > 0 then invImages = '<div class="infobox-invimages">' .. table.concat( invImages, '' ) .. '</div>' else invImages = '' end else invImages = '' end if images ~= '' or invImages ~= '' then imageArea = images .. '\n' .. invImages else imageArea = 'none' end end if imageArea and imageArea ~= 'none' then imageArea = '<div class="infobox-imagearea">' .. imageArea .. '</div>' else imageArea = '' end local footer = args.footer if footer then footer = '| class="infobox-footer" colspan="2" | ' .. footer end local html = { '<div class="notaninfobox">', '<div class="infobox-title mcwiki-header">' .. title .. '</div>', imageArea, '{| class="infobox-rows" cellspacing="1" cellpadding="4"', '|-', args.rows or '', footer or '', '|}', '</div>' } return table.concat( html, '\n' ) end return p 731643c30d4b33c55af8931cbff7f233756f6af4 Template:Infobox row 10 91 148 2024-05-02T22:30:05Z Axxyyy 2 Created page with "<includeonly>! {{ucfirst: {{{1|{{{label|}}}}}} }} | {{{2|{{{field|}}}}}} |-</includeonly><noinclude> {{/doc}} [[Category:Infobox templates]] </noinclude>" wikitext text/x-wiki <includeonly>! {{ucfirst: {{{1|{{{label|}}}}}} }} | {{{2|{{{field|}}}}}} |-</includeonly><noinclude> {{/doc}} [[Category:Infobox templates]] </noinclude> d9aab638f9231e45e42eb38f569c1c7b5e49e57f Template:Infobox row/doc 10 92 149 2024-05-02T22:30:23Z Axxyyy 2 Created page with "{{doc/start}} === Usage === This is a skeleton for infobox rows, for use in {{tl|infobox}}. <pre style="width: 154px">{{infobox row | label | data }}</pre> {{doc/end}}" wikitext text/x-wiki {{doc/start}} === Usage === This is a skeleton for infobox rows, for use in {{tl|infobox}}. <pre style="width: 154px">{{infobox row | label | data }}</pre> {{doc/end}} c6ee91fe4e70d807919a5c60dca84c69f5f83ef7 File:Grid Ceramic.png 6 93 150 2024-05-02T22:33:39Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Grid 10 94 151 2024-05-02T22:45:59Z Axxyyy 2 Redirected page to [[Template:Inventory slot]] wikitext text/x-wiki #REDIRECT [[Template:Inventory slot]] e56425bdc12fe49f9e3f05434db183e3994cf626 Template:Inventory slot 10 95 152 2024-05-02T22:46:29Z Axxyyy 2 Created page with "<includeonly>{{#invoke: inventory slot | slot }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page -->" wikitext text/x-wiki <includeonly>{{#invoke: inventory slot | slot }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page --> 7b1139fc59ddd8138d38ebee3d6131f458d4fc23 Template:Item/doc 10 96 153 2024-05-02T22:49:29Z Axxyyy 2 Created page with "{doc/start}} {{lua|Infobox}} {{Item}} This template provides a uniform design for usable item pages. When an item restores health, it is recommended to use [[Template:Food]] instead. <pre width="30px"> {{Item |title= |image= |imagesize= |image2= |image2size= |image3= |image3size= |invimage= |invimage2= |invimage3= |invimage4= |invimage5= |invimage6= |invimage7= |invimage8= |invimage9= |invimage10= |invimage11= |invimage12= |invimage13= |invimage14= |invimage15= |invimage..." wikitext text/x-wiki {doc/start}} {{lua|Infobox}} {{Item}} This template provides a uniform design for usable item pages. When an item restores health, it is recommended to use [[Template:Food]] instead. <pre width="30px"> {{Item |title= |image= |imagesize= |image2= |image2size= |image3= |image3size= |invimage= |invimage2= |invimage3= |invimage4= |invimage5= |invimage6= |invimage7= |invimage8= |invimage9= |invimage10= |invimage11= |invimage12= |invimage13= |invimage14= |invimage15= |invimage16= |invimage17= |invimage18= |invimage19= |invimage20= |invimage21= |invimage22= |invimage23= |invimage24= |invimage25= |type= |otherosonly= |durability= |renewable= |stackable= |availability= |data= |nameid= |firstver= }}</pre> Please note that if the item has multiple data values, use <code><nowiki>|multipledata=</nowiki></code> instead. See below: {| class="wikitable" ! Parameter ! Function ! Default/Example value |- | <code>title</code> || Optional value to use a different title instead of the page name || <code><nowiki>{{BASEPAGENAME}}</nowiki></code> |- | <code>image</code> || Image of the block (should be approx. 150x150px) || <code><nowiki>{{{title}}}.png</nowiki></code> if it exists, otherwise [[:File:No image.svg|No image.svg]] (linking to the page where to upload the missing image) |- | <code>imagesize</code> || Adjusts the size of the image || 150px |- | <code>image2</code> || Image of the block (should be approx. 150x150px) || ''None'' |- | <code>image2size</code> || Adjusts the size of the second image || 150px |- | <code>image3</code> || Image of the block (should be approx. 150x150px) || ''None'' |- | <code>image3size</code> || Adjusts the size of the third image || 150px |- | <code>invimage</code> || Image for object in inventory. Can use '''None''' to force no invimage. Uses [[Template:Grid]]. || <code><nowiki>Grid {{{title}}}.png</nowiki></code> if it exists, otherwise ''None'' |- | <code>invimage2</code> || Second image for two-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage3</code> || Third image for three-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage4</code> || Fourth image for four-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage5</code> || Fifth image for five-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage6</code> || Sixth image for six-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage7</code> || Seventh image for seven-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage8</code> || Eighth image for eight-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage9</code> || Ninth image for nine-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage10</code> || Tenth image for ten-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage11</code> || Eleventh image for eleven-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage12</code> || Twelfth image for twelve-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage13</code> || Thirteenth image for thirteen-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage14</code> || Fourteenth image for fourteen-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage15</code> || Fifteenth image for fifteen-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage16</code> || Sixteenth image for sixteen-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage17</code> || Seventeenth image for seventeen-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage18</code> || Eighteenth image for eighteen-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage19</code> || Nineteenth image for nineteen-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage20</code> || Twentieth image for twenty-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage21</code> || Twenty-First image for twenty-one-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage22</code> || Twenty-Second image for twenty-two-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage23</code> || Twenty-Third image for twenty-three-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage24</code> || Twenty-Forth image for twenty-four-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>invimage25</code> || Twenty-Fifth image for twenty-five-state objects in inventory. Uses [[Template:Grid]]. || ''None'' |- | <code>type</code> || Type (Weapon, Ranged Weapon, Craftable Item, Tool, etc. ) || ? |- | <code>otherosonly</code> || For use if the item is only available in a specific version of Minecraft. || ''None'' |- | <code>durability</code> || How durable the item is || N/A |- | <code>renewable</code> || Whether the item is [[Renewable Resources|renewable]] || ? |- | <code>stackable</code> || Stackable || ? |- | <code>availability </code> || The availability of an item || ? |- | <code>data</code> || Single decimal data value || ''None'' |- | <code>nameid</code> || The item's named identifier. Can use '''None''' to force no name ID. || <code>title</code> or <code><nowiki>{{BASEPAGENAME}}</nowiki></code> |- | <code>multipledata</code> || Multiple decimal data values, use {{tl|dv}} || ''None'' |- | <code>firstver</code> || First version that it was seen in (e.g. Alpha 1.0.17, classic 0.0.23a). || ''None'' |} == See also == {{Infobox see also}} {{doc/end}} 39501c33a69e4e0d65b87db904602baa4c148c5f Template:Inventory slot/doc 10 97 154 2024-05-03T01:28:23Z Axxyyy 2 Created page with "{{shortcut|Slot}} {{lua|data=Inventory slot/Aliases}} The inventory slot template creates an interface element which looks and acts like an in-game inventory slot. The images used are primarily taken from {{tl|InvSprite}}, but if the specified item is not found, the template falls back to individual images in the format of <code>Grid ''<item name>''.png</code>. == Usage == All inputs are optional:<br> <pre>{{Slot |[Title]Mod:Name,Amount[Description]; [Title2]Mod2:Name2..." wikitext text/x-wiki {{shortcut|Slot}} {{lua|data=Inventory slot/Aliases}} The inventory slot template creates an interface element which looks and acts like an in-game inventory slot. The images used are primarily taken from {{tl|InvSprite}}, but if the specified item is not found, the template falls back to individual images in the format of <code>Grid ''<item name>''.png</code>. == Usage == All inputs are optional:<br> <pre>{{Slot |[Title]Mod:Name,Amount[Description]; [Title2]Mod2:Name2,Amount2[Description2]; ... |mod=Default mod (useful for animations and layout templates) |default=Image always shown under the main image |align=Vertical Alignment |link=Link override |title=Text show on mouseover |class=Adds additional classes to the .invslot class |style=Adds styling to the .invslot |imgclass=Adds additional classes to the .invslot-item |numstyle=Adds styling to the stack number }}</pre> === Parts === The first parameter is a special parameter consisting of various "parts" grouped together in frames (delimited by <code>;</code>) which will be display one after another if JavaScript is enabled. Every part is optional, but without "name", won't do anything. ==== Simple example ==== To display an inventory item of "Raw Porkchop" with an stack size of 20 you would put: <code><nowiki>{{Slot|Raw Porkchop,20}}</nowiki></code> ;shows {{Slot|Raw Porkchop,20}} An amount of 2–999 is supported, anything else will not be displayed. === Aliases === {{#invoke: Inventory slot/Aliases/Table | table }} Note: Banner variations are not included due to how many there are. The above aliases can be used to shorten common items, such as all wood blocks or adding parts to certain names by default. <code><nowiki>{{Slot|Any Wood;Golden Apple}}</nowiki></code> ;shows {{Slot|Any Wood;Golden Apple}} When using the alias, parts can be added which will override any parts in the alias. <code><nowiki>{{Slot|Any Wood,4;[&oShiny Apple]Enchanted Golden Apple}}</nowiki></code> ;shows {{Slot|Any Wood,4;[&oShiny Apple]Enchanted Golden Apple}} Mods can specify an additional aliases table using the modaliases parameter. === Titles and description === The title parameter can be used to set a title for all frames. <code><nowiki>{{Slot|Raw Porkchop; Cooked Porkchop|title=Smelly Porkchop}}</nowiki></code> ;shows {{Slot|Raw Porkchop; Cooked Porkchop|title=Smelly Porkchop}} To remove the title, set it to "none": <code><nowiki>{{Slot|Raw Porkchop; Cooked Porkchop|title=none}}</nowiki></code> ;shows {{Slot|Raw Porkchop; Cooked Porkchop|title=none}} However, the first bracketed text can be used to specify a title for each frame individually, and also supports standard [[formatting codes]] using <code>&</code> instead of <code>§</code>. If the title only contains formatting codes and no actual text, the formatting will be added to the normal title. <code><nowiki>{{Slot|[&b]Diamond Sword}}</nowiki></code> ;shows {{Slot|[&b]Diamond Sword}} The last bracketed text can be used to specify a description, this also supports standard formatting codes, and can also have multiple lines by using forward slashes (/). <code><nowiki>{{Slot|[&b&oExcalibur]Iron Sword[&7Smite V/Fire Aspect I//&9+6 Attack Damage]}}</nowiki></code> ;shows {{Slot|[&b&oExcalibur]Iron Sword[&7Smite V/Fire Aspect I//&9+6 Attack Damage]}} === Subframes === Subframes are shown as a single frame, but the frames within it are advanced every time the subframe is displayed. A set of frames can be put in a subframe by wrapping it in braces. Here, an alias (which resolves to multiple frames) is wrapped in a subframe, and a different wood plank variant is shown each animation cycle: <code><nowiki>{{Slot|{Any Wood Planks};Iron Ingot}}</nowiki></code> ;shows {{Slot|{Any Wood Planks};Iron Ingot}} === Align === Align uses the [http://www.w3.org/wiki/CSS/Properties/vertical-align vertical-align] CSS property. For example to align to the middle: <code><nowiki>Smells like {{Slot|Raw Porkchop|align=middle}} in here!</nowiki></code> ;shows Smells like {{Slot|Raw Porkchop|align=middle}} in here! === Default === Default is always shown and is placed under the image. <code><nowiki>{{Slot|default=Grid layout Brewing Empty}}{{Slot|Splash Mundane Potion|default=Grid layout Brewing Empty}}</nowiki></code> ;shows {{Slot|default=Grid layout Brewing Empty}}{{Slot|Splash Mundane Potion|default=Grid layout Brewing Empty}} === Link === To change the link for all frames from the image name put: <code><nowiki>{{Slot|Charcoal|link=Coal#Charcoal}}</nowiki></code> ;shows {{Slot|Charcoal|link=Coal#Charcoal}} To remove the link, set link to none: <code><nowiki>{{Slot|Charcoal|link=none}}</nowiki></code> ;shows {{Slot|Charcoal|link=none}} Note that this retains the title. === Mods === <!-- TODO: Update for sprite usage --> A mod image is specified with the Mod: section of the name (or by setting a default mod using the mod parameter). The image link will then link to the mod sub-page allowing correct linking of mod images. The uploaded image name should by uploaded as <code>Grid <Name> (<Mod>).png</code> and should be added to the [[:Category:Inventory slot mods|Inventory slot mods]] category, which prevents them from being confused with official Minecraft items.<br> For example, to display this mod image [[:File:Grid Bronze Sword (IndustrialCraft).png]]: <code><nowiki>{{Slot|IndustrialCraft:Bronze Sword}}</nowiki></code> (or <code><nowiki>{{Slot|mod=IndustrialCraft|Bronze Sword}}</nowiki></code>) ;shows {{Slot|IndustrialCraft:Bronze Sword}} Slots can be animated with a theoretically unlimited amount of frames, between mod items and vanilla items. Frames are separated by semi-colons (;). <pre>{{Slot| Dirt; TNT,64; IndustrialCraft:Bronze Sword,6; ; Grass Block,5; Sand; Gold Helmet,12; IndustrialCraft:Bronze Helmet,2; IndustrialCraft:Copper,50; Redstone }}</pre> ;shows {{Slot| Dirt; TNT,64; IndustrialCraft:Bronze Sword,6; ; Grass Block,5; Sand; Gold Helmet,12; IndustrialCraft:Bronze Helmet,2; IndustrialCraft:Copper,50; Redstone }} As you can see, the mod had to be specified for each mod frame, this is where the default mod parameter is useful. <code><nowiki>{{Slot|mod=IndustrialCraft|Bronze Sword,6; ; Bronze Helmet,12; Copper,50; Copper Dust}}</nowiki></code> ;shows {{Slot|mod=IndustrialCraft|Bronze Sword,6; ; Bronze Helmet,12; Copper,50; Copper Dust}} To use a vanilla minecraft item when a default mod is set, use "vanilla" (shortcut "v") or "minecraft" (shortcut "mc") as the mod (case insensitive). <pre>{{Slot|mod=IndustrialCraft| Vanilla:Dirt; vanilla:TNT,64; Bronze Sword,6; ; V:Grass Block,5; v:Sand; Minecraft:Gold Helmet,12; Bronze Helmet,2; Copper,50; mc:Redstone Dust }}</pre> ;shows {{Slot|mod=IndustrialCraft| Vanilla:Dirt; vanilla:TNT,64; Bronze Sword,6; ; V:Grass Block,5; v:Sand; Minecraft:Gold Helmet,12; Bronze Helmet,2; Copper,50; mc:Redstone Dust }} == Available images == In general, an item can be referred to by its tooltip name. For dyes, dyed items and wood, there are two shortcuts to refer to all colors or tree species. Use e.g. "Any Wood Planks" if the item appears in more than one input slot and doesn't have to be the same color in all slots. Different copies of the same "Any [item]" will switch randomly and separately among the variants. Otherwise, use "Matching [item]"; all slots containing a "Matching" item will cycle through the species or dye colors in unison, even if they're not the same item. <pre> {{Slot|Any Wood Planks}}{{Slot|Any Wood Slab}}{{Slot|Any Wood Stairs}} {{Slot|Matching Wood Planks}}{{Slot|Matching Wood Slab}}{{Slot|Matching Wood Stairs}} </pre> '''shows''' {{Slot|Any Wood Planks}}{{Slot|Any Wood Slab}}{{Slot|Any Wood Stairs}} {{Slot|Matching Wood Planks}}{{Slot|Matching Wood Slab}}{{Slot|Matching Wood Stairs}} Most items with a durability bar exist as "Damaged [item]". {{LoadPage|Template:InvSprite/Image list|List|h3|transcluded=1}} == Other templates == These templates implement this template into a GUI screen which mimics how it would look in Minecraft. Thus, they have mostly the same features as this template. {{UI see also}} <includeonly> <!-- Template categories/interwiki here --> [[Category:Image templates]] [[Category:Inventory templates]] a19683ded39cdfd1b488a9035ec1f5980561f9d8 163 154 2024-05-03T18:29:40Z Axxyyy 2 wikitext text/x-wiki {{shortcut|Slot}} {{lua|data=Inventory slot/Aliases}} The inventory slot template creates an interface element which looks and acts like an in-game inventory slot. The images used are primarily taken from {{tl|InvSprite}}, but if the specified item is not found, the template falls back to individual images in the format of <code>Grid ''<item name>''.png</code>. == Usage == All inputs are optional:<br> <pre>{{Slot |[Title]Mod:Name,Amount[Description]; [Title2]Mod2:Name2,Amount2[Description2]; ... |mod=Default mod (useful for animations and layout templates) |default=Image always shown under the main image |align=Vertical Alignment |link=Link override |title=Text show on mouseover |class=Adds additional classes to the .invslot class |style=Adds styling to the .invslot |imgclass=Adds additional classes to the .invslot-item |numstyle=Adds styling to the stack number }}</pre> === Parts === The first parameter is a special parameter consisting of various "parts" grouped together in frames (delimited by <code>;</code>) which will be display one after another if JavaScript is enabled. Every part is optional, but without "name", won't do anything. ==== Simple example ==== To display an inventory item of "Raw Porkchop" with an stack size of 20 you would put: <code><nowiki>{{Slot|Raw Porkchop,20}}</nowiki></code> ;shows {{Slot|Raw Porkchop,20}} An amount of 2–999 is supported, anything else will not be displayed. The above aliases can be used to shorten common items, such as all wood blocks or adding parts to certain names by default. <code><nowiki>{{Slot|Any Wood;Golden Apple}}</nowiki></code> ;shows {{Slot|Any Wood;Golden Apple}} When using the alias, parts can be added which will override any parts in the alias. <code><nowiki>{{Slot|Any Wood,4;[&oShiny Apple]Enchanted Golden Apple}}</nowiki></code> ;shows {{Slot|Any Wood,4;[&oShiny Apple]Enchanted Golden Apple}} Mods can specify an additional aliases table using the modaliases parameter. === Titles and description === The title parameter can be used to set a title for all frames. <code><nowiki>{{Slot|Raw Porkchop; Cooked Porkchop|title=Smelly Porkchop}}</nowiki></code> ;shows {{Slot|Raw Porkchop; Cooked Porkchop|title=Smelly Porkchop}} To remove the title, set it to "none": <code><nowiki>{{Slot|Raw Porkchop; Cooked Porkchop|title=none}}</nowiki></code> ;shows {{Slot|Raw Porkchop; Cooked Porkchop|title=none}} However, the first bracketed text can be used to specify a title for each frame individually, and also supports standard [[formatting codes]] using <code>&</code> instead of <code>§</code>. If the title only contains formatting codes and no actual text, the formatting will be added to the normal title. <code><nowiki>{{Slot|[&b]Diamond Sword}}</nowiki></code> ;shows {{Slot|[&b]Diamond Sword}} The last bracketed text can be used to specify a description, this also supports standard formatting codes, and can also have multiple lines by using forward slashes (/). <code><nowiki>{{Slot|[&b&oExcalibur]Iron Sword[&7Smite V/Fire Aspect I//&9+6 Attack Damage]}}</nowiki></code> ;shows {{Slot|[&b&oExcalibur]Iron Sword[&7Smite V/Fire Aspect I//&9+6 Attack Damage]}} === Subframes === Subframes are shown as a single frame, but the frames within it are advanced every time the subframe is displayed. A set of frames can be put in a subframe by wrapping it in braces. Here, an alias (which resolves to multiple frames) is wrapped in a subframe, and a different wood plank variant is shown each animation cycle: <code><nowiki>{{Slot|{Any Wood Planks};Iron Ingot}}</nowiki></code> ;shows {{Slot|{Any Wood Planks};Iron Ingot}} === Align === Align uses the [http://www.w3.org/wiki/CSS/Properties/vertical-align vertical-align] CSS property. For example to align to the middle: <code><nowiki>Smells like {{Slot|Raw Porkchop|align=middle}} in here!</nowiki></code> ;shows Smells like {{Slot|Raw Porkchop|align=middle}} in here! === Default === Default is always shown and is placed under the image. <code><nowiki>{{Slot|default=Grid layout Brewing Empty}}{{Slot|Splash Mundane Potion|default=Grid layout Brewing Empty}}</nowiki></code> ;shows {{Slot|default=Grid layout Brewing Empty}}{{Slot|Splash Mundane Potion|default=Grid layout Brewing Empty}} === Link === To change the link for all frames from the image name put: <code><nowiki>{{Slot|Charcoal|link=Coal#Charcoal}}</nowiki></code> ;shows {{Slot|Charcoal|link=Coal#Charcoal}} To remove the link, set link to none: <code><nowiki>{{Slot|Charcoal|link=none}}</nowiki></code> ;shows {{Slot|Charcoal|link=none}} Note that this retains the title. === Mods === <!-- TODO: Update for sprite usage --> A mod image is specified with the Mod: section of the name (or by setting a default mod using the mod parameter). The image link will then link to the mod sub-page allowing correct linking of mod images. The uploaded image name should by uploaded as <code>Grid <Name> (<Mod>).png</code> and should be added to the [[:Category:Inventory slot mods|Inventory slot mods]] category, which prevents them from being confused with official Minecraft items.<br> For example, to display this mod image [[:File:Grid Bronze Sword (IndustrialCraft).png]]: <code><nowiki>{{Slot|IndustrialCraft:Bronze Sword}}</nowiki></code> (or <code><nowiki>{{Slot|mod=IndustrialCraft|Bronze Sword}}</nowiki></code>) ;shows {{Slot|IndustrialCraft:Bronze Sword}} Slots can be animated with a theoretically unlimited amount of frames, between mod items and vanilla items. Frames are separated by semi-colons (;). <pre>{{Slot| Dirt; TNT,64; IndustrialCraft:Bronze Sword,6; ; Grass Block,5; Sand; Gold Helmet,12; IndustrialCraft:Bronze Helmet,2; IndustrialCraft:Copper,50; Redstone }}</pre> ;shows {{Slot| Dirt; TNT,64; IndustrialCraft:Bronze Sword,6; ; Grass Block,5; Sand; Gold Helmet,12; IndustrialCraft:Bronze Helmet,2; IndustrialCraft:Copper,50; Redstone }} As you can see, the mod had to be specified for each mod frame, this is where the default mod parameter is useful. <code><nowiki>{{Slot|mod=IndustrialCraft|Bronze Sword,6; ; Bronze Helmet,12; Copper,50; Copper Dust}}</nowiki></code> ;shows {{Slot|mod=IndustrialCraft|Bronze Sword,6; ; Bronze Helmet,12; Copper,50; Copper Dust}} To use a vanilla minecraft item when a default mod is set, use "vanilla" (shortcut "v") or "minecraft" (shortcut "mc") as the mod (case insensitive). <pre>{{Slot|mod=IndustrialCraft| Vanilla:Dirt; vanilla:TNT,64; Bronze Sword,6; ; V:Grass Block,5; v:Sand; Minecraft:Gold Helmet,12; Bronze Helmet,2; Copper,50; mc:Redstone Dust }}</pre> ;shows {{Slot|mod=IndustrialCraft| Vanilla:Dirt; vanilla:TNT,64; Bronze Sword,6; ; V:Grass Block,5; v:Sand; Minecraft:Gold Helmet,12; Bronze Helmet,2; Copper,50; mc:Redstone Dust }} == Available images == In general, an item can be referred to by its tooltip name. For dyes, dyed items and wood, there are two shortcuts to refer to all colors or tree species. Use e.g. "Any Wood Planks" if the item appears in more than one input slot and doesn't have to be the same color in all slots. Different copies of the same "Any [item]" will switch randomly and separately among the variants. Otherwise, use "Matching [item]"; all slots containing a "Matching" item will cycle through the species or dye colors in unison, even if they're not the same item. <pre> {{Slot|Any Wood Planks}}{{Slot|Any Wood Slab}}{{Slot|Any Wood Stairs}} {{Slot|Matching Wood Planks}}{{Slot|Matching Wood Slab}}{{Slot|Matching Wood Stairs}} </pre> '''shows''' {{Slot|Any Wood Planks}}{{Slot|Any Wood Slab}}{{Slot|Any Wood Stairs}} {{Slot|Matching Wood Planks}}{{Slot|Matching Wood Slab}}{{Slot|Matching Wood Stairs}} Most items with a durability bar exist as "Damaged [item]". {{LoadPage|Template:InvSprite/Image list|List|h3|transcluded=1}} == Other templates == These templates implement this template into a GUI screen which mimics how it would look in Minecraft. Thus, they have mostly the same features as this template. {{UI see also}} <includeonly> <!-- Template categories/interwiki here --> [[Category:Image templates]] [[Category:Inventory templates]] 83fc9727e3a6c9f5516cb1d28428527ba18c29c5 Inventory slot/Aliases/Table 0 98 155 2024-05-03T01:38:50Z Axxyyy 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:TNT 10 102 159 2024-05-03T18:23:18Z Axxyyy 2 Redirected page to [[Template:Translatable template]] wikitext text/x-wiki #REDIRECT [[Template:Translatable template]] 0a59ede536f86ef13cd55072f3ba8c2f95be721a Template:Translatable template 10 103 160 2024-05-03T18:23:42Z Axxyyy 2 Created page with "<includeonly>{{#invoke:Template translation{{{sandbox|}}}|renderTranslatedTemplate|uselang={{{uselang|}}}|tntns={{{namespace|{{{tntns|}}}}}}|template={{#if:{{{noshift|}}}|{{{template}}}|{{{1}}}}}|noshift={{{noshift|}}}<!-- all other numbered or named parameters are found by the module using the parent frame -->}}</includeonly><noinclude>{{documentation}}</noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Template translation{{{sandbox|}}}|renderTranslatedTemplate|uselang={{{uselang|}}}|tntns={{{namespace|{{{tntns|}}}}}}|template={{#if:{{{noshift|}}}|{{{template}}}|{{{1}}}}}|noshift={{{noshift|}}}<!-- all other numbered or named parameters are found by the module using the parent frame -->}}</includeonly><noinclude>{{documentation}}</noinclude> 639aa3ce6c91c67b8151f8394f92cd2a44bb7a4b Template:Translatable template/doc 10 104 161 2024-05-03T18:25:57Z Axxyyy 2 Created page with "<noinclude>{{Documentation subpage}}</noinclude> {{Template shortcut|TNT|tnt}} {{high use}} == Purpose == This template, originally named "'''Translatable template'''" (often abbreviated as TNT, but which '''never''' meant "dynamite"!) is used to show translatable templates in the language of the current page. Templates, like all other MediaWiki pages, can be translated using the [[mw:Extension:Translate|Translate extension]], which creates subpages with the form "pagena..." wikitext text/x-wiki <noinclude>{{Documentation subpage}}</noinclude> {{Template shortcut|TNT|tnt}} {{high use}} == Purpose == This template, originally named "'''Translatable template'''" (often abbreviated as TNT, but which '''never''' meant "dynamite"!) is used to show translatable templates in the language of the current page. Templates, like all other MediaWiki pages, can be translated using the [[mw:Extension:Translate|Translate extension]], which creates subpages with the form "pagename/language code". The template first checks if the name of the page contains a language code. If it does, it then checks if the template name given as a first parameter has a translation in that language. If the page name does not contain a language code, or if the navigation template doesn't exist in that language, it will display the English template. == How to use == * <span style="font-family: monospace;"><nowiki>{{Translatable template|</nowiki>''name of template''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span> * <span style="font-family: monospace;"><nowiki>{{TNT|</nowiki>''name of template''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span> * <span style="font-family: monospace;"><nowiki>{{tnt|</nowiki>''name of template''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span> The above simplied syntax cannot work if the named template also needs to be transcluded in other translatable templates, because it would cause self-recursion of {{tl|Translatable template}}. An alternative is to use {{tl|Translatable template name}} which does not expand the template with its parameters, but only returns the resolved template name, which can then be transcluded normally: * <span style="font-family: monospace;"><nowiki>{{{{Translatable template name|</nowiki>''name of template''<nowiki>}}|</nowiki>''parameters....''<nowiki>}}</nowiki></span> * <span style="font-family: monospace;"><nowiki>{{{{TNTN|</nowiki>''name of template''<nowiki>}}|</nowiki>''parameters....''<nowiki>}}</nowiki></span> * <span style="font-family: monospace;"><nowiki>{{{{tntn|</nowiki>''name of template''<nowiki>}}|</nowiki>''parameters....''<nowiki>}}</nowiki></span> Example (from [[Meta:Administrator]]): : <span style="font-family: monospace;"><nowiki>{{Translatable template|User groups}}</nowiki></span> or <span style="font-family: monospace;"><nowiki>{{TNT|User groups}}</nowiki></span> which includes translated versions of {{tl|User groups}} if it exists, or the English version if translations don't exist. == Parameters == The current version of the template may now include any kind of named or numbered parameters, whose values will be transferred into the called template (with the exception of parameter 1 containing the basename of the translatable template to transclude). Numbered parameters will be shifted down by one position, all named parameters will be passed unchanged. One named parameter is treated specially: * <span style="font-family: monospace;"><nowiki>{{Translatable template|namespace=</nowiki>'':somename:''<nowiki>|</nowiki>''page name''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span> * <span style="font-family: monospace;"><nowiki>{{TNT|namespace=</nowiki>'':somename:''<nowiki>|</nowiki>''page name''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span> * <span style="font-family: monospace;"><nowiki>{{tnt|namespace=</nowiki>'':somename:''<nowiki>|</nowiki>''page name''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span> This <span style="font-family: monospace;">namespace</span> will be used to specify another namespace from which the translatable pagename will be transcluded, instead of referencing the page name from the default <span style="font-family: monospace;">:Template:</span> namespace. Note that this parameter is also passed (without modification) within the parameters of the transclusion. Example with one parameters (from [[Global sysops]]): * <span style="font-family: monospace;"><nowiki>{{TNT|Special global permissions/Seealso|Global sysops}}</nowiki></span> where the second parameter "Global sysops" is the value of the first numbered parameter transferred into called page "Special global permissions/Seealso". == Dependency == * [[Module:Template translation]] (standard version) * [[Module:Template translation/sandbox]] (used when this template is called with optional dummy parameter <span style="font-family: monospace;">sandbox=/sandbox</span>, for testing only) == See also == * {{tl|Translatable template name}}, alias {{tl|TNTN}} or {{tl|tntn}} * [[mw:Help:TemplateData|Extension:TemplateData]]. <includeonly> <!-- PUT HERE THE CATEGORIES OF THE TEMPLATE --> [[Category:Navigational templates|* {{PAGENAME}}]] [[Category:Internationalization templates|{{PAGENAME}}]] [[Category:Lua-based templates]] [[Category:Modules for specific templates]] [[Category:Lua libraries]] </includeonly> 13a0b2281dd040b6d78c94ec35670e3e4ebf4c7e File:Ceramic.png 6 108 166 2024-05-07T22:08:45Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Module:Sprite 828 5 167 9 2024-05-07T22:20:04Z Axxyyy 2 Scribunto text/plain local p = {} local CurrentFrame = mw.getCurrentFrame() function p.base( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) else f = CurrentFrame end local data = args.data and mw.loadData( 'Module:' .. args.data ) or {} local settings = data.settings -- Default settings local default = { scale = 1, sheetsize = 256, size = 16, pos = 1, align = 'text-top' } local defaultStyle = default if settings then if not settings.stylesheet then -- Make a separate clone of the current default settings defaultStyle = mw.clone( default ) end for k, v in pairs( settings ) do default[k] = v end end local setting = function( arg ) return args[arg] or default[arg] end local sprite = mw.html.create( 'span' ):addClass( 'sprite' ) -- mw.html's css method performs very slow escaping, which doubles the time it takes -- to run, so we'll construct the styles manually, and put them in the cssText -- method, which only does html escaping (which isn't slow) local styles = {} if not setting( 'nourl' ) and setting( 'url' ) then styles[#styles + 1] = 'background-image:' .. ( setting( 'url' ).url or setting( 'url' ) ) end if setting( 'stylesheet' ) then sprite:addClass( setting( 'classname' ) or mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite' ) elseif not setting( 'url' ) then styles[#styles + 1] = 'background-image:' .. p.getUrl( setting( 'image' ) or setting( 'name' ) .. 'Sprite.png' ).url end local class = setting( 'class' ) if class then sprite:addClass( class ) end local width = setting( 'width' ) or setting( 'size' ) local height = setting( 'height' ) or setting( 'size' ) local sheetWidth = setting( 'sheetsize' ) local tiles = sheetWidth / width local pos = setting( 'pos' ) - 1 local scale = setting( 'scale' ) local autoScale = setting( 'autoscale' ) if pos then local left = pos % tiles * width * scale local top = math.floor( pos / tiles ) * height * scale styles[#styles + 1] = 'background-position:-' .. left .. 'px -' .. top .. 'px' end if not autoScale and scale ~= defaultStyle.scale then styles[#styles + 1] = 'background-size:' .. sheetWidth * scale .. 'px auto' end if height ~= defaultStyle.size or width ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then styles[#styles + 1] = 'height:' .. height * scale .. 'px' styles[#styles + 1] = 'width:' .. width * scale .. 'px' end local align = setting( 'align' ) if align ~= defaultStyle.align then styles[#styles + 1] = 'vertical-align:' .. align end styles[#styles + 1] = setting( 'css' ) sprite:cssText( table.concat( styles, ';' ) ) local text = setting( 'text' ) local root local spriteText if text then if not args['wrap'] then root = mw.html.create( 'span' ):addClass( 'nowrap' ) end spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text ) end local title = setting( 'title' ) if title then ( root or sprite ):attr( 'title', title ) end if not root then root = mw.html.create( '' ) end root:node( sprite ) if spriteText then root:node( spriteText ) end local link = setting( 'link' ) or '' if link ~= '' and mw.ustring.lower( link ) ~= 'none' then -- External link if link:find( '//' ) then return '[' .. link .. ' ' .. tostring( root ) .. ']' end -- Internal link local linkPrefix = setting( 'linkprefix' ) or '' return '[[' .. linkPrefix .. link .. '|' .. tostring( root ) .. ']]' end return tostring( root ) end function p.sprite( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) else f = CurrentFrame end local data = args.data and mw.loadData( 'Module:' .. args.data ) or {} local categories = {} local idData = args.iddata if not idData then local name = args.name or data.settings.name local id = mw.text.trim( tostring( args[1] or '' ) ) idData = data.ids[id] or data.ids[mw.ustring.lower( id ):gsub( '[%s%+]', '-' )] end local title = mw.title.getCurrentTitle() -- Remove categories on language pages, talk pages, and in User/UserWiki/UserProfile namespaces local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' ) if idData then if idData.deprecated then args.class = ( args.class or '' ) .. ' sprite-deprecated' end args.pos = idData.pos elseif not disallowCats then categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages with missing sprites', project = 0 } } end return p.base( args ), table.concat( categories ) end function p.link( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) end local link = args[1] if args[1] and not args.id then link = args[1]:match( '^(.-)%+' ) or args[1] end local text if not args.notext then text = args.text or args[2] or link end args[1] = args.id or args[1] args.link = args.link or link args.text = text return p.sprite( args ) end function p.getUrl( image, query, classname ) local f = CurrentFrame local t = { url = f:expandTemplate{ title = 'FileUrl', args = { image, query = query } }, } if classname and classname ~= '' then t.style = f:expandTemplate{ title = 'FileUrlStyle', args = { classname, image, query = query } } end return t end function p.getParsedUrlStyle( f ) local args = f:getParent().args local module = args[1] return require( 'Module:' .. module ).settings.url.style end function p.doc( f ) local args = f if f == CurrentFrame then args = f.args else f = CurrentFrame end local dataPage = mw.text.trim( args[1] ) local data = mw.loadData( 'Module:' .. dataPage ) local getProtection = function( title, action, extra ) local protections = { 'edit' } if extra then protections[#protections + 1] = extra end local addProtection = function( protection ) if protection == 'autoconfirmed' then protection = 'editsemiprotected' elseif protection == 'sysop' then protection = 'editprotected' end protections[#protections + 1] = protection end local direct = title.protectionLevels[action] or {} for _, protection in ipairs( direct ) do addProtection( protection ) end local cascading = title.cascadingProtection.restrictions[action] or {} if #cascading > 0 then protections[#protections + 1] = 'protect' end for _, protection in ipairs( cascading ) do addProtection( protection ) end return table.concat( protections, ',' ) end local spriteStyle = '' if data.settings.url and data.settings.url.style then spriteStyle = data.settings.url.style end local dataTitle = mw.title.new( 'Module:' .. dataPage ) -- Temporary until this is updated local classname = '' if data.settings.stylesheet then classname = data.settings.classname or mw.ustring.lower( data.settings.name:gsub( ' ', '-' ) ) .. '-sprite' end local spritesheet = data.settings.image or data.settings.name .. 'Sprite.png' local spriteTitle = mw.title.new( 'File:' .. spritesheet ) local dataProtection = getProtection( dataTitle, 'edit' ) local spriteProtection = getProtection( spriteTitle, 'upload', 'upload,reupload' ) local body = mw.html.create( 'div' ):attr( { id = 'spritedoc', ['data-dataprotection'] = dataProtection, ['data-datatimestamp'] = f:callParserFunction( 'REVISIONTIMESTAMP', 'Module:' .. dataPage ), ['data-datapage'] = 'Module:' .. dataPage, ['data-spritesheet'] = spritesheet, ['data-spriteprotection'] = spriteProtection, ['data-urlfunc'] = "require( [[Module:Sprite]] ).getUrl( '" .. spritesheet .. "', '$1', '" .. classname .. "' )", ['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. dataPage .. '|refresh=1}}' ), ['data-settings'] = mw.text.jsonEncode( data.settings ), } ) local sections = {} for _, sectionData in ipairs( data.sections or { name = 'Uncategorized' } ) do local sectionTag = body:tag( 'div' ):addClass( 'spritedoc-section' ):attr( 'data-section-id', sectionData.id ) sectionTag:tag( 'h3' ):wikitext( sectionData.name ) sections[sectionData.id] = { boxes = sectionTag:tag( 'ul' ):addClass( 'spritedoc-boxes' ) } end local keyedData = {} local i = 1 for name, idData in pairs( data.ids ) do keyedData[i] = { sortKey = mw.ustring.lower( name ), name = name, data = idData } i = i + 1 end table.sort( keyedData, function( a, b ) return a.sortKey < b.sortKey end ) for _, data in ipairs( keyedData ) do local idData = data.data local pos = idData.pos local section = sections[idData.section] local names = section[pos] if not names then local box = section.boxes:tag( 'li' ):addClass( 'spritedoc-box' ):attr( 'data-pos', pos ) box:tag( 'div' ):addClass( 'spritedoc-image' ) :wikitext( p.base{ pos = pos, data = dataPage, nourl = spriteStyle ~= '' } ) names = box:tag( 'ul' ):addClass( 'spritedoc-names' ) section[pos] = names end local nameElem = mw.html.create( 'li' ):addClass( 'spritedoc-name' ) local codeElem = nameElem:tag( 'code' ):wikitext( data.name ) if idData.deprecated then codeElem:addClass( 'spritedoc-deprecated' ) end names:wikitext( tostring( nameElem ) ) end if args.refresh then return '', '', tostring( body ) end local styles = f:callParserFunction( '#widget:SpriteDoc.css' ) return styles, spriteStyle, tostring( body ) end return p 46e1ae0179871cc773cbd2802cb46d2efa1b36e5 168 167 2024-05-07T22:21:27Z Axxyyy 2 Scribunto text/plain local p = {} local CurrentFrame = mw.getCurrentFrame() function p.base( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) else f = CurrentFrame end local data = args.data and mw.loadData( 'Module:' .. args.data ) or {} local settings = data.settings -- Default settings local default = { scale = 1, sheetsize = 256, size = 16, pos = 1, align = 'text-top' } local defaultStyle = default if settings then if not settings.stylesheet then -- Make a separate clone of the current default settings defaultStyle = mw.clone( default ) end for k, v in pairs( settings ) do default[k] = v end end local setting = function( arg ) return args[arg] or default[arg] end local sprite = mw.html.create( 'span' ):addClass( 'sprite' ) -- mw.html's css method performs very slow escaping, which doubles the time it takes -- to run, so we'll construct the styles manually, and put them in the cssText -- method, which only does html escaping (which isn't slow) local styles = {} if not setting( 'nourl' ) and setting( 'url' ) then styles[#styles + 1] = 'background-image:' .. ( setting( 'url' ).url or setting( 'url' ) ) end if setting( 'stylesheet' ) then sprite:addClass( setting( 'classname' ) or mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite' ) elseif not setting( 'url' ) then styles[#styles + 1] = 'background-image:' .. p.getUrl( setting( 'image' ) or setting( 'name' ) .. 'Sprite.png' ).url end local class = setting( 'class' ) if class then sprite:addClass( class ) end local width = setting( 'width' ) or setting( 'size' ) local height = setting( 'height' ) or setting( 'size' ) local sheetWidth = setting( 'sheetsize' ) local tiles = sheetWidth / width local pos = setting( 'pos' ) - 1 local scale = setting( 'scale' ) local autoScale = setting( 'autoscale' ) if pos then local left = pos % tiles * width * scale local top = math.floor( pos / tiles ) * height * scale styles[#styles + 1] = 'background-position:-' .. left .. 'px -' .. top .. 'px' end if not autoScale and scale ~= defaultStyle.scale then styles[#styles + 1] = 'background-size:' .. sheetWidth * scale .. 'px auto' end if height ~= defaultStyle.size or width ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then styles[#styles + 1] = 'height:' .. height * scale .. 'px' styles[#styles + 1] = 'width:' .. width * scale .. 'px' end local align = setting( 'align' ) if align ~= defaultStyle.align then styles[#styles + 1] = 'vertical-align:' .. align end styles[#styles + 1] = setting( 'css' ) sprite:cssText( table.concat( styles, ';' ) ) local text = setting( 'text' ) local root local spriteText if text then if not args['wrap'] then root = mw.html.create( 'span' ):addClass( 'nowrap' ) end spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text ) end local title = setting( 'title' ) if title then ( root or sprite ):attr( 'title', title ) end if not root then root = mw.html.create( '' ) end root:node( sprite ) if spriteText then root:node( spriteText ) end local link = setting( 'link' ) or '' if link ~= '' and mw.ustring.lower( link ) ~= 'none' then -- External link if link:find( '//' ) then return '[' .. link .. ' ' .. tostring( root ) .. ']' end -- Internal link local linkPrefix = setting( 'linkprefix' ) or '' return '[[' .. linkPrefix .. link .. '|' .. tostring( root ) .. ']]' end return tostring( root ) end function p.sprite( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) else f = CurrentFrame end local data = args.data and mw.loadData( 'Module:' .. args.data ) or {} local categories = {} local idData = args.iddata if not idData then local name = args.name or data.settings.name local id = mw.text.trim( tostring( args[1] or '' ) ) idData = data.ids[id] or data.ids[mw.ustring.lower( id ):gsub( '[%s%+]', '-' )] end local title = mw.title.getCurrentTitle() -- Remove categories on language pages, talk pages, and in User/UserWiki/UserProfile namespaces local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' ) if idData then if idData.deprecated then args.class = ( args.class or '' ) .. ' sprite-deprecated' end args.pos = idData.pos end return p.base( args ), table.concat( categories ) end function p.link( f ) local args = f if f == CurrentFrame then args = require( 'Module:ProcessArgs' ).merge( true ) end local link = args[1] if args[1] and not args.id then link = args[1]:match( '^(.-)%+' ) or args[1] end local text if not args.notext then text = args.text or args[2] or link end args[1] = args.id or args[1] args.link = args.link or link args.text = text return p.sprite( args ) end function p.getUrl( image, query, classname ) local f = CurrentFrame local t = { url = f:expandTemplate{ title = 'FileUrl', args = { image, query = query } }, } if classname and classname ~= '' then t.style = f:expandTemplate{ title = 'FileUrlStyle', args = { classname, image, query = query } } end return t end function p.getParsedUrlStyle( f ) local args = f:getParent().args local module = args[1] return require( 'Module:' .. module ).settings.url.style end function p.doc( f ) local args = f if f == CurrentFrame then args = f.args else f = CurrentFrame end local dataPage = mw.text.trim( args[1] ) local data = mw.loadData( 'Module:' .. dataPage ) local getProtection = function( title, action, extra ) local protections = { 'edit' } if extra then protections[#protections + 1] = extra end local addProtection = function( protection ) if protection == 'autoconfirmed' then protection = 'editsemiprotected' elseif protection == 'sysop' then protection = 'editprotected' end protections[#protections + 1] = protection end local direct = title.protectionLevels[action] or {} for _, protection in ipairs( direct ) do addProtection( protection ) end local cascading = title.cascadingProtection.restrictions[action] or {} if #cascading > 0 then protections[#protections + 1] = 'protect' end for _, protection in ipairs( cascading ) do addProtection( protection ) end return table.concat( protections, ',' ) end local spriteStyle = '' if data.settings.url and data.settings.url.style then spriteStyle = data.settings.url.style end local dataTitle = mw.title.new( 'Module:' .. dataPage ) -- Temporary until this is updated local classname = '' if data.settings.stylesheet then classname = data.settings.classname or mw.ustring.lower( data.settings.name:gsub( ' ', '-' ) ) .. '-sprite' end local spritesheet = data.settings.image or data.settings.name .. 'Sprite.png' local spriteTitle = mw.title.new( 'File:' .. spritesheet ) local dataProtection = getProtection( dataTitle, 'edit' ) local spriteProtection = getProtection( spriteTitle, 'upload', 'upload,reupload' ) local body = mw.html.create( 'div' ):attr( { id = 'spritedoc', ['data-dataprotection'] = dataProtection, ['data-datatimestamp'] = f:callParserFunction( 'REVISIONTIMESTAMP', 'Module:' .. dataPage ), ['data-datapage'] = 'Module:' .. dataPage, ['data-spritesheet'] = spritesheet, ['data-spriteprotection'] = spriteProtection, ['data-urlfunc'] = "require( [[Module:Sprite]] ).getUrl( '" .. spritesheet .. "', '$1', '" .. classname .. "' )", ['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. dataPage .. '|refresh=1}}' ), ['data-settings'] = mw.text.jsonEncode( data.settings ), } ) local sections = {} for _, sectionData in ipairs( data.sections or { name = 'Uncategorized' } ) do local sectionTag = body:tag( 'div' ):addClass( 'spritedoc-section' ):attr( 'data-section-id', sectionData.id ) sectionTag:tag( 'h3' ):wikitext( sectionData.name ) sections[sectionData.id] = { boxes = sectionTag:tag( 'ul' ):addClass( 'spritedoc-boxes' ) } end local keyedData = {} local i = 1 for name, idData in pairs( data.ids ) do keyedData[i] = { sortKey = mw.ustring.lower( name ), name = name, data = idData } i = i + 1 end table.sort( keyedData, function( a, b ) return a.sortKey < b.sortKey end ) for _, data in ipairs( keyedData ) do local idData = data.data local pos = idData.pos local section = sections[idData.section] local names = section[pos] if not names then local box = section.boxes:tag( 'li' ):addClass( 'spritedoc-box' ):attr( 'data-pos', pos ) box:tag( 'div' ):addClass( 'spritedoc-image' ) :wikitext( p.base{ pos = pos, data = dataPage, nourl = spriteStyle ~= '' } ) names = box:tag( 'ul' ):addClass( 'spritedoc-names' ) section[pos] = names end local nameElem = mw.html.create( 'li' ):addClass( 'spritedoc-name' ) local codeElem = nameElem:tag( 'code' ):wikitext( data.name ) if idData.deprecated then codeElem:addClass( 'spritedoc-deprecated' ) end names:wikitext( tostring( nameElem ) ) end if args.refresh then return '', '', tostring( body ) end local styles = f:callParserFunction( '#widget:SpriteDoc.css' ) return styles, spriteStyle, tostring( body ) end return p 0c81e9d716f88d3227c4ed3d9ba80f0f98c36e0b 169 168 2024-05-07T22:24:53Z Axxyyy 2 Scribunto text/plain local p = {} function p.base( f ) local args = f if f == mw.getCurrentFrame() then args = require( 'Module:ProcessArgs' ).merge( true ) else f = mw.getCurrentFrame() end -- Default settings local default = { scale = 1, sheetsize = 256, size = 16, pos = 1, align = 'text-top' } local defaultStyle = default if args.settings then local settings = mw.loadData( 'Module:' .. args.settings ) if not settings.stylesheet then -- Make a separate clone of the current default settings defaultStyle = mw.clone( default ) end for k, v in pairs( settings ) do default[k] = v end end local setting = function( arg ) return args[arg] or default[arg] end local sprite = mw.html.create( 'span' ):addClass( 'sprite' ) sprite:tag( 'br' ) -- mw.html's css method performs very slow escaping, which doubles the time it takes -- to run, so we'll construct the styles manually, and put them in the cssText -- method, which only does html escaping (which isn't slow) local styles = {} if setting( 'stylesheet' ) then sprite:addClass( setting( 'classname' ) or mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite' ) else table.insert( styles, 'background-image:{{FileUrl|' .. ( setting( 'image' ) or setting( 'name' ) .. 'Sprite.png' ) .. '}}' ) end local class = setting( 'class' ) if class then sprite:addClass( class ) end local size = setting( 'size' ) local pos = math.abs( setting( 'pos' ) ) - 1 local sheetWidth = setting( 'sheetsize' ) local tiles = sheetWidth / size local left = pos % tiles * size local top = math.floor( pos / tiles ) * size local scale = setting( 'scale' ) local autoScale = setting( 'autoscale' ) if left > 0 or top > 0 then table.insert( styles, 'background-position:-' .. left * scale .. 'px -' .. top * scale .. 'px' ) end if not autoScale and scale ~= defaultStyle.scale then table.insert( styles, 'background-size:' .. sheetWidth * scale .. 'px auto' ) end if size ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then table.insert( styles, 'height:' .. size * scale .. 'px' ) table.insert( styles, 'width:' .. size * scale .. 'px' ) end local align = setting( 'align' ) if align ~= defaultStyle.align then table.insert( styles, 'vertical-align:' .. align ) end table.insert( styles, setting( 'css' ) ) sprite:cssText( table.concat( styles, ';' ) ) local text = setting( 'text' ) local root local spriteText if text then root = mw.html.create( 'span' ):addClass( 'nowrap' ) spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text ) end local title = setting( 'title' ) if title then ( root or sprite ):attr( 'title', title ) end if not root then root = mw.html.create( '' ) end root:node( sprite ) if spriteText then root:node( spriteText ) end local link = setting( 'link' ) or '' if link ~= '' and mw.ustring.lower( link ) ~= 'none' then -- External link if link:find( '//' ) then return '[' .. link .. ' ' .. tostring( root ) .. ']' end -- Internal link local linkPrefix = setting( 'linkprefix' ) or '' return '[[' .. linkPrefix .. link .. '|' .. tostring( root ) .. ']]' end return tostring( root ) end function p.sprite( f ) local args = f if f == mw.getCurrentFrame() then args = require( 'Module:ProcessArgs' ).merge( true ) else f = mw.getCurrentFrame() end local categories = {} local idData = args.iddata if not idData then local default = {} if args.settings then default = mw.loadData( 'Module:' .. args.settings ) end local name = args.name or default.name local ids = mw.loadData( 'Module:' .. ( args.ids or default.ids or name .. '/IDs' ) ) ids = ids.ids or ids local id = mw.text.trim( tostring( args[1] or '' ) ) idData = ids[id] or ids[mw.ustring.lower( id ):gsub( '[%s%+]', '-' )] end local title = mw.title.getCurrentTitle() -- Remove categories on language pages, talk pages, and in User/UserWiki/UserProfile namespaces local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' ) if idData then if type( idData ) == 'table' then if idData.deprecated and not disallowCats then table.insert( categories, f:expandTemplate{ title = 'Translation category', args = { 'Pages using deprecated sprite names', project = 0 } } ) end args.pos = idData.pos else args.pos = idData end elseif not disallowCats then table.insert( categories, f:expandTemplate{ title = 'Translation category', args = { 'Pages with missing sprites', project = 0 } } ) end return p.base( args ), table.concat( categories, '' ) end function p.link( f ) local args = f if f == mw.getCurrentFrame() then args = require( 'Module:ProcessArgs' ).merge( true ) end local link = args[1] if args[1] and not args.id then link = args[1]:match( '^(.-)%+' ) or args[1] end local text = args.text or args[2] or link args[1] = args.id or args[1] args.link = args.link or link args.text = text return p.sprite( args ) end function p.doc( f ) local args = f if f == mw.getCurrentFrame() then args = f.args else f = mw.getCurrentFrame() end local settingsPage = mw.text.trim( args[1] ) local settings = mw.loadData( 'Module:' .. settingsPage ) local idsPage = 'Module:' .. ( settings.ids or settings.name .. '/IDs' ) local getProtection = function( title, action, extra ) local protections = { 'edit' } if extra then table.insert( protections, extra ) end local addProtection = function( protection ) if protection == 'autoconfirmed' then protection = 'editsemiprotected' elseif protection == 'sysop' then protection = 'editprotected' end table.insert( protections, protection ) end local direct = title.protectionLevels[action] for _, protection in ipairs( direct ) do addProtection( protection ) end local cascading = title.cascadingProtection.restrictions[action] or {} if #cascading > 0 then table.insert( protections, 'protect' ) end for _, protection in ipairs( cascading ) do addProtection( protection ) end return table.concat( protections, ',' ) end local body if args.refresh then body = mw.html.create( '' ) else local idsTitle = mw.title.new( idsPage ) local spritesheet = settings.image or settings.name .. 'Sprite.png' local spriteTitle = mw.title.new( 'File:' .. spritesheet ) local idsProtection = getProtection( idsTitle, 'edit' ) local spriteProtection = getProtection( spriteTitle, 'upload', 'upload,reupload' ) body = mw.html.create( 'div' ):attr( { id = 'spritedoc', ['data-idspage'] = idsTitle.id, ['data-idsprotection'] = idsProtection, ['data-idstimestamp'] = f:callParserFunction( 'REVISIONTIMESTAMP', idsPage ), ['data-spritesheet'] = spritesheet, ['data-spriteprotection'] = spriteProtection, ['data-pos'] = settings.pos or 1, ['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. settingsPage .. '|refresh=1}}' ) } ) end local data = mw.loadData( idsPage ) local sections = {} for _, sectionData in ipairs( data.sections or { 'Uncategorized' } ) do local sectionTag = body:tag( 'div' ):addClass( 'spritedoc-section' ):attr( 'data-section-id', sectionData.id ) -- https://phabricator.wikimedia.org/T73594 sectionTag:wikitext( '<h3>', sectionData[1], '</h3>' ) sections[sectionData.id] = { boxes = sectionTag:tag( 'ul' ):addClass( 'spritedoc-boxes' ) } end local keyedData = {} for name, idData in pairs( data.ids ) do table.insert( keyedData, { sortKey = mw.ustring.lower( name ), name = name, data = idData } ) end table.sort( keyedData, function( a, b ) return a.sortKey < b.sortKey end ) for _, data in ipairs( keyedData ) do local idData = data.data local pos = idData.pos local section = sections[idData.section] local names = section[pos] if not names then local box = section.boxes:tag( 'li' ):addClass( 'spritedoc-box' ):attr( 'data-pos', pos ) box:tag( 'div' ):addClass( 'spritedoc-image' ) :wikitext( p.base{ pos = pos, settings = settingsPage } ) names = box:tag( 'ul' ):addClass( 'spritedoc-names' ) section[pos] = names end local nameElem = mw.html.create( 'li' ):addClass( 'spritedoc-name' ) local codeElem = nameElem:tag( 'code' ):wikitext( data.name ) if idData.deprecated then codeElem:addClass( 'spritedoc-deprecated' ) end names:wikitext( tostring( nameElem ) ) end if args.refresh then return '', tostring( body ) end return f:callParserFunction( '#widget:Stylesheet', { page = 'SpriteDoc' } ), tostring( body ) end return p 6b0633b79466a07e3085e5925e5032656c410b73 Module:InvSprite 828 109 171 2024-05-07T22:32:13Z Axxyyy 2 Created page with "return { settings = { align = 'middle', classname = 'inv-sprite', image = 'InvSprite.png', sheetsize = 1024, size = 32, stylesheet = true, url = require( [[Module:Sprite]] ).getUrl( 'InvSprite.png', '', 'inv-sprite' ), }, sections = { { name = 'Armor', id = 1 }, { name = 'Banner', id = 2 }, { name = 'Brewing ingredient', id = 3 }, { name = 'Bucket', id = 4 }, { name = 'Decoration', id = 5 }, { name = 'Dye', id = 6 }, { name = 'Dyed', id = 7..." Scribunto text/plain return { settings = { align = 'middle', classname = 'inv-sprite', image = 'InvSprite.png', sheetsize = 1024, size = 32, stylesheet = true, url = require( [[Module:Sprite]] ).getUrl( 'InvSprite.png', '', 'inv-sprite' ), }, sections = { { name = 'Armor', id = 1 }, { name = 'Banner', id = 2 }, { name = 'Brewing ingredient', id = 3 }, { name = 'Bucket', id = 4 }, { name = 'Decoration', id = 5 }, { name = 'Dye', id = 6 }, { name = 'Dyed', id = 7 }, { name = 'End', id = 8 }, { name = 'Firework', id = 9 }, { name = 'Food', id = 10 }, { name = 'Liquid', id = 11 }, { name = 'Manufactured', id = 12 }, { name = 'Mechanism', id = 13 }, { name = 'Mob head', id = 14 }, { name = 'Natural', id = 15 }, { name = 'Nether', id = 16 }, { name = 'Non-solid', id = 17 }, { name = 'Ore', id = 18 }, { name = 'Plant', id = 19 }, { name = 'Smithing Template', id = 41 }, { name = 'Pottery Sherd', id = 44 }, { name = 'Bedrock Edition & Education Edition', id = 20 }, { name = 'Chemistry Miscellaneous', id = 33 }, { name = 'Element', id = 34 }, { name = 'Beaker', id = 35 }, { name = 'Flask', id = 36 }, { name = 'Jar', id = 37 }, { name = 'Potion', id = 21 }, { name = 'Splash potion', id = 22 }, { name = 'Lingering potion', id = 31 }, { name = 'Raw material', id = 23 }, { name = 'Spawn egg', id = 24 }, { name = 'Tool', id = 25 }, { name = 'Trimmed Armor', id = 43 }, { name = 'Utility', id = 26 }, { name = 'Vehicle', id = 27 }, { name = 'Weapon', id = 28 }, { name = 'Legacy: Potion', id = 45 }, { name = 'Legacy: Lingering Potion', id = 46 }, { name = 'Legacy: Splash Potion', id = 47 }, { name = 'Legacy: Spawn Eggs', id = 39 }, { name = 'Legacy: Dyed', id = 40 }, { name = 'Legacy: before 15w31a stair flip', id = 42 }, { name = 'Legacy: Miscellaneous', id = 29 }, { name = 'April Fools', id = 32 }, { name = 'Other', id = 30 }, { name = 'Minecraft Earth', id = 38 }, }, ids = { ['3D'] = { pos = 446, section = 32 }, ['???'] = { pos = 1770, section = 34 }, ['A Very Fine Item'] = { pos = 263, section = 32 }, ['Acacia Boat'] = { pos = 637, section = 27 }, ['Acacia Boat Revision 2'] = { pos = 3618, section = 29 }, ['Acacia Boat with Chest'] = { pos = 610, section = 27 }, ['Acacia Button'] = { pos = 3326, section = 13 }, ['Acacia Door'] = { pos = 566, section = 13 }, ['Acacia Door Revision 3'] = { pos = 935, section = 13 }, ['Acacia Fence'] = { pos = 645, section = 12 }, ['Acacia Fence BE'] = { pos = 3222, section = 12 }, ['Acacia Fence Gate'] = { pos = 3221, section = 13 }, ['Acacia Fence Gate BE'] = { pos = 52, section = 13 }, ['Acacia Hanging Sign'] = { pos = 261, section = 5 }, ['Acacia Leaves'] = { pos = 3398, section = 19 }, ['Acacia Log'] = { pos = 3399, section = 19 }, ['Acacia Planks'] = { pos = 854, section = 12 }, ['Acacia Pressure Plate'] = { pos = 3327, section = 13 }, ['Acacia Sapling'] = { pos = 3400, section = 19 }, ['Acacia Sign'] = { pos = 2396, section = 17 }, ['Acacia Slab'] = { pos = 3223, section = 12 }, ['Acacia Stairs'] = { pos = 3224, section = 12 }, ['Acacia Trapdoor'] = { pos = 1650, section = 13 }, ['Acacia Wood'] = { pos = 3225, section = 12 }, ['Acacia Wood Button'] = { pos = 3326, section = 13 }, ['Acacia Wood Door'] = { pos = 566, section = 13 }, ['Acacia Wood Fence'] = { pos = 645, section = 12 }, ['Acacia Wood Fence Gate'] = { pos = 3221, section = 13 }, ['Acacia Wood Planks'] = { pos = 854, section = 12 }, ['Acacia Wood Pressure Plate'] = { pos = 3327, section = 13 }, ['Acacia Wood Sign'] = { pos = 2396, section = 17 }, ['Acacia Wood Slab'] = { pos = 3223, section = 12 }, ['Acacia Wood Stairs'] = { pos = 3224, section = 12 }, ['Acacia Wood Trapdoor'] = { pos = 1650, section = 13 }, Actinide = { pos = 66, section = 34 }, Actinium = { pos = 1771, section = 34 }, ['Activator Rail'] = { pos = 3328, section = 13 }, ['Adult Carrots'] = { pos = 2138, section = 19 }, ['Adult Nether Warts'] = { pos = 2170, section = 16 }, ['Adult Potatoes'] = { pos = 2142, section = 19 }, ['Adult Wheat Crops'] = { pos = 2144, section = 19 }, Air = { pos = 2363, section = 15 }, ['Alkali metal'] = { pos = 67, section = 34 }, ['Alkaline earth metal'] = { pos = 68, section = 34 }, ['Allay Spawn Egg'] = { pos = 901, section = 24 }, Allium = { pos = 3401, section = 19 }, Allow = { pos = 1435, section = 20 }, Aluminium = { pos = 1772, section = 34 }, Aluminum = { pos = 1772, section = 34 }, ['Aluminum Oxide'] = { pos = 1918, section = 37 }, Americium = { pos = 1773, section = 34 }, ['Amethyst Cluster'] = { pos = 393, section = 15 }, ['Amethyst Shard'] = { pos = 394, section = 23 }, ['Amethyst Trim Chainmail Boots'] = { pos = 829, section = 43 }, ['Amethyst Trim Chainmail Chestplate'] = { pos = 830, section = 43 }, ['Amethyst Trim Chainmail Helmet'] = { pos = 832, section = 43 }, ['Amethyst Trim Chainmail Leggings'] = { pos = 833, section = 43 }, ['Amethyst Trim Diamond Boots'] = { pos = 834, section = 43 }, ['Amethyst Trim Diamond Chestplate'] = { pos = 835, section = 43 }, ['Amethyst Trim Diamond Helmet'] = { pos = 836, section = 43 }, ['Amethyst Trim Diamond Leggings'] = { pos = 838, section = 43 }, ['Amethyst Trim Golden Boots'] = { pos = 839, section = 43 }, ['Amethyst Trim Golden Chestplate'] = { pos = 840, section = 43 }, ['Amethyst Trim Golden Helmet'] = { pos = 841, section = 43 }, ['Amethyst Trim Golden Leggings'] = { pos = 843, section = 43 }, ['Amethyst Trim Iron Boots'] = { pos = 844, section = 43 }, ['Amethyst Trim Iron Chestplate'] = { pos = 845, section = 43 }, ['Amethyst Trim Iron Helmet'] = { pos = 847, section = 43 }, ['Amethyst Trim Iron Leggings'] = { pos = 849, section = 43 }, ['Amethyst Trim Leather Boots'] = { pos = 850, section = 43 }, ['Amethyst Trim Leather Cap'] = { pos = 852, section = 43 }, ['Amethyst Trim Leather Pants'] = { pos = 853, section = 43 }, ['Amethyst Trim Leather Tunic'] = { pos = 855, section = 43 }, ['Amethyst Trim Netherite Boots'] = { pos = 856, section = 43 }, ['Amethyst Trim Netherite Chestplate'] = { pos = 857, section = 43 }, ['Amethyst Trim Netherite Helmet'] = { pos = 858, section = 43 }, ['Amethyst Trim Netherite Leggings'] = { pos = 860, section = 43 }, ['Amethyst Trim Turtle Shell'] = { pos = 861, section = 43 }, Ammonia = { pos = 1889, section = 35 }, ['Ancient Debris'] = { pos = 134, section = 16 }, Andesite = { pos = 3355, section = 15 }, ['Andesite Slab'] = { pos = 3226, section = 12 }, ['Andesite Stairs'] = { pos = 3227, section = 12 }, ['Andesite Wall'] = { pos = 3228, section = 12 }, ['Andesite Wall BE'] = { pos = 21, section = 12 }, ['Angler Pottery Sherd'] = { pos = 1220, section = 44 }, ['Ankle Monitor'] = { pos = 1637, section = 32 }, Ant = { pos = 264, section = 32 }, Antidote = { pos = 1744, section = 33 }, Antimony = { pos = 1774, section = 34 }, Anvil = { pos = 3594, section = 26 }, Apple = { pos = 3193, section = 10 }, ['Apple Revision 1'] = { pos = 2034, section = 29 }, ['Archer Pottery Sherd'] = { pos = 1201, section = 44 }, Argentum = { pos = 1775, section = 34 }, Argon = { pos = 1776, section = 34 }, ['Armor Stand'] = { pos = 3150, section = 5 }, ['Arms Up Pottery Sherd'] = { pos = 1202, section = 44 }, Arrow = { pos = 1267, section = 28 }, ['Arrow 15w14a'] = { pos = 117, section = 32 }, ['Arrow Loaded Crossbow'] = { pos = 2383, section = 28 }, ['Arrow of Big'] = { pos = 1237, section = 32 }, ['Arrow of Decay'] = { pos = 1408, section = 28 }, ['Arrow of Decay Revision 1'] = { pos = 1562, section = 29 }, ['Arrow of Fire Resistance'] = { pos = 1268, section = 28 }, ['Arrow of Harming'] = { pos = 1269, section = 28 }, ['Arrow of Healing'] = { pos = 1270, section = 28 }, ['Arrow of Invisibility'] = { pos = 1271, section = 28 }, ['Arrow of Leaping'] = { pos = 1272, section = 28 }, ['Arrow of Luck'] = { pos = 1362, section = 28 }, ['Arrow of Night Vision'] = { pos = 1273, section = 28 }, ['Arrow of Poison'] = { pos = 1274, section = 28 }, ['Arrow of Regeneration'] = { pos = 1275, section = 28 }, ['Arrow of Slow Falling'] = { pos = 1734, section = 28 }, ['Arrow of Slowness'] = { pos = 1276, section = 28 }, ['Arrow of Small'] = { pos = 1238, section = 32 }, ['Arrow of Splashing'] = { pos = 1266, section = 28 }, ['Arrow of Strength'] = { pos = 1277, section = 28 }, ['Arrow of Swiftness'] = { pos = 1278, section = 28 }, ['Arrow of the Turtle Master'] = { pos = 2030, section = 28 }, ['Arrow of Water Breathing'] = { pos = 133, section = 28 }, ['Arrow of Weakness'] = { pos = 1279, section = 28 }, Arsenic = { pos = 1777, section = 34 }, Astatine = { pos = 1778, section = 34 }, Aurum = { pos = 1779, section = 34 }, ['Awkward Lingering Potion'] = { pos = 1097, section = 31 }, ['Awkward Potion'] = { pos = 1083, section = 21 }, ['Awkward Potion Revision 1'] = { pos = 292, section = 45 }, ['Awkward Splash Potion'] = { pos = 1100, section = 22 }, ['Axolotl Spawn Egg'] = { pos = 440, section = 24 }, Azalea = { pos = 464, section = 19 }, ['Azalea Leaves'] = { pos = 465, section = 19 }, ['Azure Bluet'] = { pos = 3402, section = 19 }, ['Baked Potato'] = { pos = 3194, section = 10 }, ['Baked Potato Revision 1'] = { pos = 2069, section = 29 }, Bamboo = { pos = 2373, section = 19 }, ['Bamboo Button'] = { pos = 670, section = 13 }, ['Bamboo Door'] = { pos = 671, section = 13 }, ['Bamboo Fence'] = { pos = 662, section = 12 }, ['Bamboo Fence Gate'] = { pos = 672, section = 13 }, ['Bamboo Hanging Sign'] = { pos = 650, section = 5 }, ['Bamboo Mosaic'] = { pos = 664, section = 12 }, ['Bamboo Mosaic Slab'] = { pos = 665, section = 12 }, ['Bamboo Mosaic Stairs'] = { pos = 666, section = 12 }, ['Bamboo Planks'] = { pos = 667, section = 12 }, ['Bamboo Pressure Plate'] = { pos = 674, section = 13 }, ['Bamboo Raft'] = { pos = 690, section = 27 }, ['Bamboo Raft BE'] = { pos = 693, section = 27 }, ['Bamboo Raft with Chest'] = { pos = 691, section = 27 }, ['Bamboo Raft with Chest BE'] = { pos = 694, section = 27 }, ['Bamboo Sign'] = { pos = 680, section = 17 }, ['Bamboo Slab'] = { pos = 668, section = 12 }, ['Bamboo Stairs'] = { pos = 669, section = 12 }, ['Bamboo Trapdoor'] = { pos = 679, section = 13 }, ['Bamboo Wood Button'] = { pos = 670, section = 13 }, ['Bamboo Wood Door'] = { pos = 671, section = 13 }, ['Bamboo Wood Fence'] = { pos = 662, section = 12 }, ['Bamboo Wood Fence Gate'] = { pos = 672, section = 13 }, ['Bamboo Wood Planks'] = { pos = 667, section = 12 }, ['Bamboo Wood Pressure Plate'] = { pos = 674, section = 13 }, ['Bamboo Wood Sign'] = { pos = 680, section = 17 }, ['Bamboo Wood Slab'] = { pos = 668, section = 12 }, ['Bamboo Wood Stairs'] = { pos = 669, section = 12 }, ['Bamboo Wood Trapdoor'] = { pos = 679, section = 13 }, Banner = { pos = 788, section = 7 }, ['Banner Pattern'] = { pos = 2391, section = 2 }, ['Banner Revision 1'] = { pos = 2042, section = 29 }, Barium = { pos = 1780, section = 34 }, ['Barium Sulfate'] = { pos = 1915, section = 37 }, Barrel = { pos = 2435, section = 26 }, Barrier = { pos = 3595, section = 26 }, Basalt = { pos = 148, section = 16 }, ['Bat Spawn Egg'] = { pos = 1142, section = 24 }, Beacon = { pos = 3596, section = 26 }, ['Beacon BE'] = { pos = 212, section = 26 }, Beaker = { pos = 1889, section = 35 }, Bedrock = { pos = 971, section = 15 }, ['Bee Nest'] = { pos = 64, section = 15 }, ['Bee Spawn Egg'] = { pos = 104, section = 24 }, ['Bee Spawn Egg Revision 1'] = { pos = 65, section = 39 }, Beehive = { pos = 63, section = 12 }, Beetroot = { pos = 3196, section = 10 }, ['Beetroot Seeds'] = { pos = 3403, section = 19 }, ['Beetroot Soup'] = { pos = 3195, section = 10 }, Beetroots = { pos = 2145, section = 19 }, Bell = { pos = 2409, section = 5 }, Benzene = { pos = 1890, section = 35 }, Berkelium = { pos = 1781, section = 34 }, Beryllium = { pos = 1782, section = 34 }, ['Big Dripleaf'] = { pos = 466, section = 19 }, ['Birch Boat'] = { pos = 635, section = 27 }, ['Birch Boat Revision 2'] = { pos = 3619, section = 29 }, ['Birch Boat with Chest'] = { pos = 611, section = 27 }, ['Birch Button'] = { pos = 3329, section = 13 }, ['Birch Door'] = { pos = 567, section = 13 }, ['Birch Door Revision 3'] = { pos = 937, section = 13 }, ['Birch Fence'] = { pos = 643, section = 12 }, ['Birch Fence BE'] = { pos = 3230, section = 12 }, ['Birch Fence Gate'] = { pos = 3229, section = 13 }, ['Birch Fence Gate BE'] = { pos = 53, section = 13 }, ['Birch Hanging Sign'] = { pos = 651, section = 5 }, ['Birch Leaves'] = { pos = 3404, section = 19 }, ['Birch Log'] = { pos = 3405, section = 19 }, ['Birch Log Revision 1'] = { pos = 2238, section = 29 }, ['Birch Planks'] = { pos = 859, section = 12 }, ['Birch Pressure Plate'] = { pos = 3330, section = 13 }, ['Birch Sapling'] = { pos = 3406, section = 19 }, ['Birch Sign'] = { pos = 2393, section = 17 }, ['Birch Slab'] = { pos = 3231, section = 12 }, ['Birch Stairs'] = { pos = 3232, section = 12 }, ['Birch Stairs Left'] = { pos = 2256, section = 42 }, ['Birch Trapdoor'] = { pos = 1648, section = 13 }, ['Birch Wood'] = { pos = 3233, section = 12 }, ['Birch Wood Button'] = { pos = 3329, section = 13 }, ['Birch Wood Door'] = { pos = 567, section = 13 }, ['Birch Wood Fence'] = { pos = 643, section = 12 }, ['Birch Wood Fence Gate'] = { pos = 3229, section = 13 }, ['Birch Wood Planks'] = { pos = 859, section = 12 }, ['Birch Wood Pressure Plate'] = { pos = 3330, section = 13 }, ['Birch Wood Sign'] = { pos = 2393, section = 17 }, ['Birch Wood Slab'] = { pos = 3231, section = 12 }, ['Birch Wood Stairs'] = { pos = 3232, section = 12 }, ['Birch Wood Trapdoor'] = { pos = 1648, section = 13 }, Bismuth = { pos = 1783, section = 34 }, Bit = { pos = 1241, section = 32 }, ['Black Balloon'] = { pos = 1928, section = 33 }, ['Black Banner'] = { pos = 704, section = 7 }, ['Black Banner 15w14a'] = { pos = 472, section = 32 }, ['Black Base Banner'] = { pos = 2530, section = 2 }, ['Black Base Dexter Canton Banner'] = { pos = 2531, section = 2 }, ['Black Base Gradient Banner'] = { pos = 2532, section = 2 }, ['Black Base Indented Banner'] = { pos = 2533, section = 2 }, ['Black Base Sinister Canton Banner'] = { pos = 2534, section = 2 }, ['Black Beaker'] = { pos = 1891, section = 35 }, ['Black Bed'] = { pos = 3171, section = 7 }, ['Black Bed BE'] = { pos = 1235, section = 7 }, ['Black Bed LCE'] = { pos = 1235, section = 7 }, ['Black Bend Banner'] = { pos = 2535, section = 2 }, ['Black Bend Sinister Banner'] = { pos = 2536, section = 2 }, ['Black Bordure Banner'] = { pos = 2537, section = 2 }, ['Black Bordure Indented Banner'] = { pos = 2538, section = 2 }, ['Black Candle'] = { pos = 395, section = 7 }, ['Black Carpet'] = { pos = 1621, section = 7 }, ['Black Carpet Revision 1'] = { pos = 705, section = 40 }, ['Black Chevron Banner'] = { pos = 2539, section = 2 }, ['Black Chief Banner'] = { pos = 2540, section = 2 }, ['Black Chief Dexter Canton Banner'] = { pos = 2541, section = 2 }, ['Black Chief Indented Banner'] = { pos = 2542, section = 2 }, ['Black Chief Sinister Canton Banner'] = { pos = 2543, section = 2 }, ['Black Concrete'] = { pos = 1475, section = 7 }, ['Black Concrete Powder'] = { pos = 1476, section = 7 }, ['Black Creeper Charge Banner'] = { pos = 2544, section = 2 }, ['Black Cross Banner'] = { pos = 2545, section = 2 }, ['Black Dye'] = { pos = 2375, section = 6 }, ['Black Fess Banner'] = { pos = 2546, section = 2 }, ['Black Field Masoned Banner'] = { pos = 2547, section = 2 }, ['Black Firework Star'] = { pos = 804, section = 9 }, ['Black Flask'] = { pos = 1902, section = 36 }, ['Black Flower Charge Banner'] = { pos = 2548, section = 2 }, ['Black Glazed Terracotta'] = { pos = 1477, section = 7 }, ['Black Globe Banner'] = { pos = 35, section = 2 }, ['Black Gradient Banner'] = { pos = 2549, section = 2 }, ['Black Inverted Chevron Banner'] = { pos = 2550, section = 2 }, ['Black Jar'] = { pos = 1916, section = 37 }, ['Black Lozenge Banner'] = { pos = 2551, section = 2 }, ['Black Pale Banner'] = { pos = 2552, section = 2 }, ['Black Pale Dexter Banner'] = { pos = 2553, section = 2 }, ['Black Pale Sinister Banner'] = { pos = 2554, section = 2 }, ['Black Paly Banner'] = { pos = 2555, section = 2 }, ['Black Per Bend Banner'] = { pos = 2556, section = 2 }, ['Black Per Bend Inverted Banner'] = { pos = 2557, section = 2 }, ['Black Per Bend Sinister Banner'] = { pos = 2558, section = 2 }, ['Black Per Bend Sinister Inverted Banner'] = { pos = 2559, section = 2 }, ['Black Per Fess Banner'] = { pos = 2560, section = 2 }, ['Black Per Fess Inverted Banner'] = { pos = 2561, section = 2 }, ['Black Per Pale Banner'] = { pos = 2562, section = 2 }, ['Black Per Pale Inverted Banner'] = { pos = 2563, section = 2 }, ['Black Piglin Banner'] = { pos = 359, section = 2 }, ['Black Roundel Banner'] = { pos = 2564, section = 2 }, ['Black Saltire Banner'] = { pos = 2565, section = 2 }, ['Black Shield'] = { pos = 2469, section = 1 }, ['Black Shulker Box'] = { pos = 1603, section = 7 }, ['Black Shulker Box Revision 1'] = { pos = 1416, section = 40 }, ['Black Skull Charge Banner'] = { pos = 2566, section = 2 }, ['Black Snout Banner'] = { pos = 359, section = 2 }, ['Black Stained Glass'] = { pos = 707, section = 7 }, ['Black Stained Glass Pane'] = { pos = 708, section = 7 }, ['Black Stained Glass Pane BE'] = { pos = 2008, section = 7 }, ['Black Terracotta'] = { pos = 706, section = 7 }, ['Black Thing Banner'] = { pos = 2567, section = 2 }, ['Black Tinted Glass'] = { pos = 1294, section = 40 }, ['Black Tinted Glass Pane'] = { pos = 3, section = 40 }, ['Black Wood Planks'] = { pos = 244, section = 30 }, ['Black Wool'] = { pos = 1523, section = 7 }, ['Black Wool Revision 2'] = { pos = 709, section = 40 }, Blackstone = { pos = 260, section = 16 }, ['Blackstone Slab'] = { pos = 276, section = 12 }, ['Blackstone Stairs'] = { pos = 277, section = 12 }, ['Blackstone Wall'] = { pos = 278, section = 12 }, ['Blackstone Wall BE'] = { pos = 386, section = 12 }, ['Blade Pottery Sherd'] = { pos = 1221, section = 44 }, ['Blank Spawn Egg'] = { pos = 2361, section = 39 }, ['Blast Furnace'] = { pos = 2442, section = 26 }, ['Blaze Powder'] = { pos = 654, section = 3 }, ['Blaze Rod'] = { pos = 655, section = 3 }, ['Blaze Spawn Egg'] = { pos = 1143, section = 24 }, ['Blaze Spawn Egg Revision 1'] = { pos = 1350, section = 39 }, Bleach = { pos = 1745, section = 33 }, ['Bleach (filled)'] = { pos = 1746, section = 33 }, ['Block of Amethyst'] = { pos = 396, section = 15 }, ['Block of Bamboo'] = { pos = 699, section = 12 }, ['Block of Coal'] = { pos = 3234, section = 12 }, ['Block of Coal Revision 1'] = { pos = 1295, section = 29 }, ['Block of Copper'] = { pos = 401, section = 12 }, ['Block of Diamond'] = { pos = 3235, section = 12 }, ['Block of Emerald'] = { pos = 3236, section = 12 }, ['Block of Gold'] = { pos = 3237, section = 12 }, ['Block of Iron'] = { pos = 3238, section = 12 }, ['Block of Lapis Lazuli'] = { pos = 3273, section = 12 }, ['Block of Netherite'] = { pos = 132, section = 12 }, ['Block of Quartz'] = { pos = 3239, section = 12 }, ['Block of Raw Copper'] = { pos = 545, section = 12 }, ['Block of Raw Gold'] = { pos = 546, section = 12 }, ['Block of Raw Iron'] = { pos = 547, section = 12 }, ['Block of Redstone'] = { pos = 3331, section = 13 }, ['Block of Stripped Bamboo'] = { pos = 700, section = 12 }, ['Blue Balloon'] = { pos = 1929, section = 33 }, ['Blue Banner'] = { pos = 710, section = 7 }, ['Blue Banner 15w14a'] = { pos = 473, section = 32 }, ['Blue Base Banner'] = { pos = 2568, section = 2 }, ['Blue Base Dexter Canton Banner'] = { pos = 2569, section = 2 }, ['Blue Base Gradient Banner'] = { pos = 2570, section = 2 }, ['Blue Base Indented Banner'] = { pos = 2571, section = 2 }, ['Blue Base Sinister Canton Banner'] = { pos = 2572, section = 2 }, ['Blue Beaker'] = { pos = 1892, section = 35 }, ['Blue Bed'] = { pos = 3172, section = 7 }, ['Blue Bed BE'] = { pos = 1546, section = 7 }, ['Blue Bed LCE'] = { pos = 1546, section = 7 }, ['Blue Bend Banner'] = { pos = 2573, section = 2 }, ['Blue Bend Sinister Banner'] = { pos = 2574, section = 2 }, ['Blue Bordure Banner'] = { pos = 2575, section = 2 }, ['Blue Bordure Indented Banner'] = { pos = 2576, section = 2 }, ['Blue Candle'] = { pos = 397, section = 7 }, ['Blue Carpet'] = { pos = 1622, section = 7 }, ['Blue Carpet Revision 1'] = { pos = 711, section = 40 }, ['Blue Chevron Banner'] = { pos = 2577, section = 2 }, ['Blue Chief Banner'] = { pos = 2578, section = 2 }, ['Blue Chief Dexter Canton Banner'] = { pos = 2579, section = 2 }, ['Blue Chief Indented Banner'] = { pos = 2580, section = 2 }, ['Blue Chief Sinister Canton Banner'] = { pos = 2581, section = 2 }, ['Blue Concrete'] = { pos = 1478, section = 7 }, ['Blue Concrete Powder'] = { pos = 1479, section = 7 }, ['Blue Creeper Charge Banner'] = { pos = 2582, section = 2 }, ['Blue Cross Banner'] = { pos = 2583, section = 2 }, ['Blue Dye'] = { pos = 2376, section = 6 }, ['Blue Fess Banner'] = { pos = 2584, section = 2 }, ['Blue Field Masoned Banner'] = { pos = 2585, section = 2 }, ['Blue Firework Star'] = { pos = 805, section = 9 }, ['Blue Flask'] = { pos = 1903, section = 36 }, ['Blue Flower Charge Banner'] = { pos = 2586, section = 2 }, ['Blue Glazed Terracotta'] = { pos = 1480, section = 7 }, ['Blue Globe Banner'] = { pos = 36, section = 2 }, ['Blue Glow Stick'] = { pos = 1977, section = 33 }, ['Blue Gradient Banner'] = { pos = 2587, section = 2 }, ['Blue Ice'] = { pos = 1735, section = 15 }, ['Blue Ice BE'] = { pos = 113, section = 15 }, ['Blue Inverted Chevron Banner'] = { pos = 2588, section = 2 }, ['Blue Jar'] = { pos = 1917, section = 37 }, ['Blue Key'] = { pos = 451, section = 32 }, ['Blue Lozenge Banner'] = { pos = 2589, section = 2 }, ['Blue Orchid'] = { pos = 3407, section = 19 }, ['Blue Pale Banner'] = { pos = 2590, section = 2 }, ['Blue Pale Dexter Banner'] = { pos = 2591, section = 2 }, ['Blue Pale Sinister Banner'] = { pos = 2592, section = 2 }, ['Blue Paly Banner'] = { pos = 2593, section = 2 }, ['Blue Per Bend Banner'] = { pos = 2594, section = 2 }, ['Blue Per Bend Inverted Banner'] = { pos = 2595, section = 2 }, ['Blue Per Bend Sinister Banner'] = { pos = 2596, section = 2 }, ['Blue Per Bend Sinister Inverted Banner'] = { pos = 2597, section = 2 }, ['Blue Per Fess Banner'] = { pos = 2598, section = 2 }, ['Blue Per Fess Inverted Banner'] = { pos = 2599, section = 2 }, ['Blue Per Pale Banner'] = { pos = 2600, section = 2 }, ['Blue Per Pale Inverted Banner'] = { pos = 2601, section = 2 }, ['Blue Piglin Banner'] = { pos = 360, section = 2 }, ['Blue Roundel Banner'] = { pos = 2602, section = 2 }, ['Blue Saltire Banner'] = { pos = 2603, section = 2 }, ['Blue Shield'] = { pos = 2470, section = 1 }, ['Blue Shulker Box'] = { pos = 1604, section = 7 }, ['Blue Shulker Box Revision 1'] = { pos = 1417, section = 40 }, ['Blue Skull Charge Banner'] = { pos = 2604, section = 2 }, ['Blue Snout Banner'] = { pos = 360, section = 2 }, ['Blue Sparkler'] = { pos = 1747, section = 33 }, ['Blue Sparkler (active)'] = { pos = 1748, section = 33 }, ['Blue Stained Glass'] = { pos = 713, section = 7 }, ['Blue Stained Glass Pane'] = { pos = 714, section = 7 }, ['Blue Stained Glass Pane BE'] = { pos = 2009, section = 7 }, ['Blue Terracotta'] = { pos = 712, section = 7 }, ['Blue Thing Banner'] = { pos = 2605, section = 2 }, ['Blue Tinted Glass'] = { pos = 1296, section = 40 }, ['Blue Tinted Glass Pane'] = { pos = 4, section = 40 }, ['Blue Torch'] = { pos = 1749, section = 33 }, ['Blue Wood Planks'] = { pos = 245, section = 30 }, ['Blue Wool'] = { pos = 1524, section = 7 }, ['Blue Wool Revision 2'] = { pos = 715, section = 40 }, Board = { pos = 1592, section = 20 }, Boat = { pos = 1259, section = 29 }, ['Boat 15w14a'] = { pos = 621, section = 32 }, ['Boat with Chest'] = { pos = 616, section = 27 }, Bohrium = { pos = 1784, section = 34 }, Bone = { pos = 3502, section = 23 }, ['Bone Block'] = { pos = 3356, section = 15 }, ['Bone Meal'] = { pos = 3155, section = 6 }, Book = { pos = 3503, section = 23 }, ['Book and Quill'] = { pos = 3532, section = 25 }, Bookshelf = { pos = 3240, section = 12 }, Border = { pos = 1593, section = 20 }, Boron = { pos = 1785, section = 34 }, ['Boron Trioxide'] = { pos = 1915, section = 37 }, ["Bottle o' Enchanting"] = { pos = 3466, section = 22 }, ['Bottle of Mob'] = { pos = 1243, section = 32 }, ['Bottle of Void'] = { pos = 1301, section = 32 }, Bow = { pos = 1280, section = 28 }, ['Bow BE'] = { pos = 1602, section = 28 }, Bowl = { pos = 3533, section = 25 }, ['Box of Infinite Books'] = { pos = 265, section = 32 }, ['Brain Coral'] = { pos = 1712, section = 15 }, ['Brain Coral Block'] = { pos = 1707, section = 15 }, ['Brain Coral Block Revision 1'] = { pos = 1702, section = 29 }, ['Brain Coral Fan'] = { pos = 2132, section = 15 }, ['Brain Coral Fan Revision 1'] = { pos = 1723, section = 29 }, ['Brain Coral Fan Revision 2'] = { pos = 2136, section = 29 }, Bread = { pos = 3197, section = 10 }, ['Bread Revision 1'] = { pos = 2035, section = 29 }, ['Brewer Pottery Sherd'] = { pos = 1222, section = 44 }, ['Brewing Stand'] = { pos = 3597, section = 26 }, Brick = { pos = 3504, section = 23 }, ['Brick Slab'] = { pos = 3241, section = 12 }, ['Brick Slab Old'] = { pos = 871, section = 12 }, ['Brick Stairs'] = { pos = 3242, section = 12 }, ['Brick Stairs Left'] = { pos = 2257, section = 42 }, ['Brick Wall'] = { pos = 3243, section = 12 }, ['Brick Wall BE'] = { pos = 22, section = 12 }, Bricks = { pos = 110, section = 12 }, ['Bricks Old'] = { pos = 870, section = 12 }, ['Broken Anvil'] = { pos = 448, section = 26 }, ['Broken Elytra'] = { pos = 2471, section = 1 }, Bromine = { pos = 1786, section = 34 }, ['Brown Balloon'] = { pos = 1930, section = 33 }, ['Brown Banner'] = { pos = 716, section = 7 }, ['Brown Banner 15w14a'] = { pos = 474, section = 32 }, ['Brown Base Banner'] = { pos = 2606, section = 2 }, ['Brown Base Dexter Canton Banner'] = { pos = 2607, section = 2 }, ['Brown Base Gradient Banner'] = { pos = 2608, section = 2 }, ['Brown Base Indented Banner'] = { pos = 2609, section = 2 }, ['Brown Base Sinister Canton Banner'] = { pos = 2610, section = 2 }, ['Brown Beaker'] = { pos = 1893, section = 35 }, ['Brown Bed'] = { pos = 3173, section = 7 }, ['Brown Bed BE'] = { pos = 1547, section = 7 }, ['Brown Bed LCE'] = { pos = 1547, section = 7 }, ['Brown Bend Banner'] = { pos = 2611, section = 2 }, ['Brown Bend Sinister Banner'] = { pos = 2612, section = 2 }, ['Brown Bordure Banner'] = { pos = 2613, section = 2 }, ['Brown Bordure Indented Banner'] = { pos = 2614, section = 2 }, ['Brown Candle'] = { pos = 398, section = 7 }, ['Brown Carpet'] = { pos = 1623, section = 7 }, ['Brown Carpet Revision 1'] = { pos = 717, section = 40 }, ['Brown Chevron Banner'] = { pos = 2615, section = 2 }, ['Brown Chief Banner'] = { pos = 2616, section = 2 }, ['Brown Chief Dexter Canton Banner'] = { pos = 2617, section = 2 }, ['Brown Chief Indented Banner'] = { pos = 2618, section = 2 }, ['Brown Chief Sinister Canton Banner'] = { pos = 2619, section = 2 }, ['Brown Concrete'] = { pos = 1481, section = 7 }, ['Brown Concrete Powder'] = { pos = 1482, section = 7 }, ['Brown Creeper Charge Banner'] = { pos = 2620, section = 2 }, ['Brown Cross Banner'] = { pos = 2621, section = 2 }, ['Brown Dye'] = { pos = 2377, section = 6 }, ['Brown Fess Banner'] = { pos = 2622, section = 2 }, ['Brown Field Masoned Banner'] = { pos = 2623, section = 2 }, ['Brown Firework Star'] = { pos = 806, section = 9 }, ['Brown Flask'] = { pos = 1904, section = 36 }, ['Brown Flower Charge Banner'] = { pos = 2624, section = 2 }, ['Brown Glazed Terracotta'] = { pos = 1483, section = 7 }, ['Brown Globe Banner'] = { pos = 37, section = 2 }, ['Brown Glow Stick'] = { pos = 1978, section = 33 }, ['Brown Gradient Banner'] = { pos = 2625, section = 2 }, ['Brown Inverted Chevron Banner'] = { pos = 2626, section = 2 }, ['Brown Jar'] = { pos = 1918, section = 37 }, ['Brown Lozenge Banner'] = { pos = 2627, section = 2 }, ['Brown Mushroom'] = { pos = 3409, section = 19 }, ['Brown Mushroom Block'] = { pos = 3408, section = 19 }, ['Brown Pale Banner'] = { pos = 2628, section = 2 }, ['Brown Pale Dexter Banner'] = { pos = 2629, section = 2 }, ['Brown Pale Sinister Banner'] = { pos = 2630, section = 2 }, ['Brown Paly Banner'] = { pos = 2631, section = 2 }, ['Brown Per Bend Banner'] = { pos = 2632, section = 2 }, ['Brown Per Bend Inverted Banner'] = { pos = 2633, section = 2 }, ['Brown Per Bend Sinister Banner'] = { pos = 2634, section = 2 }, ['Brown Per Bend Sinister Inverted Banner'] = { pos = 2635, section = 2 }, ['Brown Per Fess Banner'] = { pos = 2636, section = 2 }, ['Brown Per Fess Inverted Banner'] = { pos = 2637, section = 2 }, ['Brown Per Pale Banner'] = { pos = 2638, section = 2 }, ['Brown Per Pale Inverted Banner'] = { pos = 2639, section = 2 }, ['Brown Piglin Banner'] = { pos = 361, section = 2 }, ['Brown Roundel Banner'] = { pos = 2640, section = 2 }, ['Brown Saltire Banner'] = { pos = 2641, section = 2 }, ['Brown Shield'] = { pos = 2472, section = 1 }, ['Brown Shulker Box'] = { pos = 1605, section = 7 }, ['Brown Shulker Box Revision 1'] = { pos = 1418, section = 40 }, ['Brown Skull Charge Banner'] = { pos = 2642, section = 2 }, ['Brown Snout Banner'] = { pos = 361, section = 2 }, ['Brown Stained Glass'] = { pos = 719, section = 7 }, ['Brown Stained Glass Pane'] = { pos = 720, section = 7 }, ['Brown Stained Glass Pane BE'] = { pos = 2010, section = 7 }, ['Brown Terracotta'] = { pos = 718, section = 7 }, ['Brown Thing Banner'] = { pos = 2643, section = 2 }, ['Brown Tinted Glass'] = { pos = 1297, section = 40 }, ['Brown Tinted Glass Pane'] = { pos = 5, section = 40 }, ['Brown Wood Planks'] = { pos = 246, section = 30 }, ['Brown Wool'] = { pos = 1525, section = 7 }, ['Brown Wool Revision 2'] = { pos = 721, section = 40 }, Brush = { pos = 1206, section = 25 }, ['Bubble Column'] = { pos = 2364, section = 15 }, ['Bubble Coral'] = { pos = 1713, section = 15 }, ['Bubble Coral Block'] = { pos = 1708, section = 15 }, ['Bubble Coral Block Revision 1'] = { pos = 1703, section = 29 }, ['Bubble Coral Fan'] = { pos = 2133, section = 15 }, ['Bubble Coral Fan Revision 1'] = { pos = 1724, section = 29 }, ['Bubble Coral Fan Revision 2'] = { pos = 2137, section = 29 }, Bucket = { pos = 3146, section = 4 }, ['Bucket of Axolotl'] = { pos = 445, section = 4 }, ['Bucket of Cod'] = { pos = 1686, section = 4 }, ['Bucket of Mud'] = { pos = 92, section = 38 }, ['Bucket of Pufferfish'] = { pos = 1687, section = 4 }, ['Bucket of Pufferfish BE'] = { pos = 2087, section = 4 }, ['Bucket of Salmon'] = { pos = 1688, section = 4 }, ['Bucket of Tadpole'] = { pos = 573, section = 4 }, ['Bucket of Tropical Fish'] = { pos = 2028, section = 4 }, ['Bucket of Tropical Fish BE'] = { pos = 1685, section = 29 }, ['Budding Amethyst'] = { pos = 399, section = 15 }, Bundle = { pos = 447, section = 25 }, ['Buried Treasure Map'] = { pos = 3579, section = 25 }, ['Buried Treasure Map BE'] = { pos = 123, section = 25 }, ['Buried Treasure Map Revision 1'] = { pos = 1219, section = 25 }, ['Burn Pottery Sherd'] = { pos = 1223, section = 44 }, Buttercup = { pos = 109, section = 38 }, ['Byte Tag'] = { pos = 1244, section = 32 }, Cactus = { pos = 3410, section = 19 }, ['Cactus BE Revision 1'] = { pos = 2163, section = 29 }, ['Cactus Green'] = { pos = 689, section = 6 }, Cadmium = { pos = 1787, section = 34 }, Caesium = { pos = 1792, section = 34 }, Cake = { pos = 3598, section = 26 }, ['Cake Revision 1'] = { pos = 2, section = 29 }, Calcite = { pos = 432, section = 15 }, Calcium = { pos = 1788, section = 34 }, ['Calcium Bromide'] = { pos = 1915, section = 37 }, ['Calcium Chloride'] = { pos = 1915, section = 37 }, Californium = { pos = 1789, section = 34 }, ['Camel Spawn Egg'] = { pos = 683, section = 24 }, Camera = { pos = 1949, section = 20 }, ['Camera (old)'] = { pos = 1365, section = 20 }, Campfire = { pos = 2459, section = 26 }, Candle = { pos = 400, section = 26 }, ['Capri Cloth'] = { pos = 232, section = 40 }, Carbon = { pos = 1790, section = 34 }, Carrot = { pos = 3198, section = 10 }, ['Carrot on a Stick'] = { pos = 3534, section = 25 }, ['Carrot Revision 2'] = { pos = 127, section = 29 }, ['Cartography Table'] = { pos = 2452, section = 26 }, ['Cartography Table Revision 1'] = { pos = 2443, section = 26 }, ['Carved Pumpkin'] = { pos = 3411, section = 19 }, ['Cast Fishing Rod'] = { pos = 227, section = 25 }, ['Cat Spawn Egg'] = { pos = 2410, section = 24 }, ['Cat Spawn Egg Revision 1'] = { pos = 1370, section = 39 }, Cauldron = { pos = 3599, section = 26 }, ['Cave Air'] = { pos = 2363, section = 15 }, ['Cave Spider Spawn Egg'] = { pos = 1144, section = 24 }, ['Cave Spider Spawn Egg Revision 1'] = { pos = 1369, section = 39 }, Cerium = { pos = 1791, section = 34 }, ['Cerium Chloride'] = { pos = 1915, section = 37 }, Cesium = { pos = 1792, section = 34 }, Chain = { pos = 290, section = 5 }, ['Chainmail Boots'] = { pos = 2473, section = 1 }, ['Chainmail Chestplate'] = { pos = 2474, section = 1 }, ['Chainmail Helmet'] = { pos = 2475, section = 1 }, ['Chainmail Leggings'] = { pos = 2476, section = 1 }, Charcoal = { pos = 3505, section = 23 }, ['Charcoal Revision 1'] = { pos = 1119, section = 29 }, ['Chartreuse Cloth'] = { pos = 234, section = 40 }, Cheese = { pos = 1245, section = 32 }, ['Cherry Boat'] = { pos = 1207, section = 27 }, ['Cherry Boat with Chest'] = { pos = 1208, section = 27 }, ['Cherry Button'] = { pos = 1188, section = 13 }, ['Cherry Door'] = { pos = 1189, section = 13 }, ['Cherry Fence'] = { pos = 1181, section = 12 }, ['Cherry Fence Gate'] = { pos = 1190, section = 13 }, ['Cherry Hanging Sign'] = { pos = 1179, section = 5 }, ['Cherry Leaves'] = { pos = 1195, section = 19 }, ['Cherry Log'] = { pos = 1196, section = 19 }, ['Cherry Planks'] = { pos = 1182, section = 12 }, ['Cherry Pressure Plate'] = { pos = 1191, section = 13 }, ['Cherry Sapling'] = { pos = 1197, section = 19 }, ['Cherry Sign'] = { pos = 1194, section = 17 }, ['Cherry Slab'] = { pos = 1183, section = 12 }, ['Cherry Stairs'] = { pos = 1184, section = 12 }, ['Cherry Trapdoor'] = { pos = 1192, section = 13 }, ['Cherry Wood'] = { pos = 1185, section = 12 }, ['Cherry Wood Button'] = { pos = 1188, section = 13 }, ['Cherry Wood Door'] = { pos = 1189, section = 13 }, ['Cherry Wood Fence'] = { pos = 1181, section = 12 }, ['Cherry Wood Fence Gate'] = { pos = 1190, section = 13 }, ['Cherry Wood Planks'] = { pos = 1182, section = 12 }, ['Cherry Wood Pressure Plate'] = { pos = 1191, section = 13 }, ['Cherry Wood Sign'] = { pos = 1194, section = 17 }, ['Cherry Wood Slab'] = { pos = 1183, section = 12 }, ['Cherry Wood Stairs'] = { pos = 1184, section = 12 }, ['Cherry Wood Trapdoor'] = { pos = 1192, section = 13 }, Chest = { pos = 1239, section = 26 }, ['Chest BE'] = { pos = 58, section = 26 }, ['Chest Revision 2'] = { pos = 375, section = 29 }, ['Chicken Spawn Egg'] = { pos = 1145, section = 24 }, ['Chicken Spawn Egg Revision 1'] = { pos = 1384, section = 39 }, ['Chipped Anvil'] = { pos = 3600, section = 26 }, ['Chiseled Bookshelf'] = { pos = 688, section = 26 }, ['Chiseled Deepslate'] = { pos = 489, section = 12 }, ['Chiseled Nether Bricks'] = { pos = 269, section = 16 }, ['Chiseled Polished Blackstone'] = { pos = 270, section = 16 }, ['Chiseled Quartz Block'] = { pos = 872, section = 12 }, ['Chiseled Red Sandstone'] = { pos = 3244, section = 12 }, ['Chiseled Sandstone'] = { pos = 3245, section = 12 }, ['Chiseled Stone Bricks'] = { pos = 3357, section = 15 }, ['Chiseled Stone Bricks Monster Egg'] = { pos = 3357, section = 15 }, Chlorine = { pos = 1793, section = 34 }, ['Chorus Flower'] = { pos = 3412, section = 19 }, ['Chorus Fruit'] = { pos = 3199, section = 10 }, ['Chorus Plant'] = { pos = 3413, section = 19 }, Chromium = { pos = 1794, section = 34 }, Clay = { pos = 3358, section = 15 }, ['Clay (ball)'] = { pos = 3506, section = 23 }, ['Clay (block)'] = { pos = 3358, section = 15 }, ['Clay Ball'] = { pos = 3506, section = 23 }, Clock = { pos = 549, section = 25 }, ['Clock Revision 1'] = { pos = 2169, section = 29 }, ['Clock Revision 2'] = { pos = 511, section = 29 }, Clownfish = { pos = 825, section = 10 }, ['Clownfish Revision 1'] = { pos = 825, section = 10 }, ['Cluckshroom Spawn Egg'] = { pos = 624, section = 38 }, Coal = { pos = 3507, section = 23 }, ['Coal Ore'] = { pos = 3391, section = 18 }, ['Coal Revision 2'] = { pos = 1119, section = 29 }, ['Coarse Dirt'] = { pos = 974, section = 15 }, ['Coast Armor Trim'] = { pos = 204, section = 41 }, ['Coast Armor Trim Smithing Template'] = { pos = 204, section = 41 }, Cobalt = { pos = 1795, section = 34 }, ['Cobbled Deepslate'] = { pos = 513, section = 12 }, ['Cobbled Deepslate Slab'] = { pos = 494, section = 12 }, ['Cobbled Deepslate Stairs'] = { pos = 495, section = 12 }, ['Cobbled Deepslate Wall'] = { pos = 500, section = 12 }, ['Cobbled Deepslate Wall BE'] = { pos = 560, section = 12 }, Cobblestone = { pos = 3359, section = 12 }, ['Cobblestone Monster Egg'] = { pos = 3359, section = 12 }, ['Cobblestone Slab'] = { pos = 3246, section = 12 }, ['Cobblestone Stairs'] = { pos = 3247, section = 12 }, ['Cobblestone Stairs Left'] = { pos = 2258, section = 42 }, ['Cobblestone Wall'] = { pos = 3248, section = 12 }, ['Cobblestone Wall BE'] = { pos = 2024, section = 12 }, Cobweb = { pos = 3360, section = 15 }, ['Cocoa Beans'] = { pos = 3156, section = 6 }, ['Cod Spawn Egg'] = { pos = 1697, section = 24 }, ['Cod Spawn Egg Revision 1'] = { pos = 1968, section = 39 }, Compass = { pos = 550, section = 25 }, ['Compass Revision 1'] = { pos = 2168, section = 29 }, ['Compass Revision 2'] = { pos = 512, section = 29 }, Composter = { pos = 2460, section = 13 }, ['Compound Creator'] = { pos = 1931, section = 33 }, ['Compound Tag'] = { pos = 1246, section = 32 }, Conduit = { pos = 2033, section = 26 }, ['Conduit BE'] = { pos = 213, section = 26 }, ['Cooked Beef'] = { pos = 848, section = 10 }, ['Cooked Chicken'] = { pos = 3200, section = 10 }, ['Cooked Cod'] = { pos = 1690, section = 10 }, ['Cooked Fish'] = { pos = 827, section = 10 }, ['Cooked Fish Revision 1'] = { pos = 827, section = 10 }, ['Cooked Mutton'] = { pos = 3201, section = 10 }, ['Cooked Porkchop'] = { pos = 3202, section = 10 }, ['Cooked Rabbit'] = { pos = 3203, section = 10 }, ['Cooked Salmon'] = { pos = 1691, section = 10 }, ['Cooked Salmon 3DS'] = { pos = 831, section = 10 }, ['Cooked Salmon Revision 1'] = { pos = 831, section = 10 }, Cookie = { pos = 3204, section = 10 }, Copernicium = { pos = 1796, section = 34 }, Copper = { pos = 1797, section = 34 }, ['Copper Block'] = { pos = 401, section = 12 }, ['Copper Horn'] = { pos = 583, section = 25 }, ['Copper Ingot'] = { pos = 450, section = 23 }, ['Copper Ore'] = { pos = 449, section = 18 }, ['Copper Sink'] = { pos = 1247, section = 32 }, ['Copper Spleaves'] = { pos = 1248, section = 32 }, ['Copper Trim Chainmail Boots'] = { pos = 862, section = 43 }, ['Copper Trim Chainmail Chestplate'] = { pos = 863, section = 43 }, ['Copper Trim Chainmail Helmet'] = { pos = 864, section = 43 }, ['Copper Trim Chainmail Leggings'] = { pos = 865, section = 43 }, ['Copper Trim Diamond Boots'] = { pos = 866, section = 43 }, ['Copper Trim Diamond Chestplate'] = { pos = 868, section = 43 }, ['Copper Trim Diamond Helmet'] = { pos = 869, section = 43 }, ['Copper Trim Diamond Leggings'] = { pos = 873, section = 43 }, ['Copper Trim Golden Boots'] = { pos = 874, section = 43 }, ['Copper Trim Golden Chestplate'] = { pos = 875, section = 43 }, ['Copper Trim Golden Helmet'] = { pos = 876, section = 43 }, ['Copper Trim Golden Leggings'] = { pos = 877, section = 43 }, ['Copper Trim Iron Boots'] = { pos = 878, section = 43 }, ['Copper Trim Iron Chestplate'] = { pos = 879, section = 43 }, ['Copper Trim Iron Helmet'] = { pos = 880, section = 43 }, ['Copper Trim Iron Leggings'] = { pos = 882, section = 43 }, ['Copper Trim Leather Boots'] = { pos = 883, section = 43 }, ['Copper Trim Leather Cap'] = { pos = 885, section = 43 }, ['Copper Trim Leather Pants'] = { pos = 887, section = 43 }, ['Copper Trim Leather Tunic'] = { pos = 888, section = 43 }, ['Copper Trim Netherite Boots'] = { pos = 889, section = 43 }, ['Copper Trim Netherite Chestplate'] = { pos = 890, section = 43 }, ['Copper Trim Netherite Helmet'] = { pos = 891, section = 43 }, ['Copper Trim Netherite Leggings'] = { pos = 892, section = 43 }, ['Copper Trim Turtle Shell'] = { pos = 893, section = 43 }, Cornflower = { pos = 2389, section = 19 }, ['Cow Spawn Egg'] = { pos = 1146, section = 24 }, ['Cow Spawn Egg Revision 1'] = { pos = 1385, section = 39 }, ['Cracked Deepslate Bricks'] = { pos = 520, section = 12 }, ['Cracked Deepslate Tiles'] = { pos = 521, section = 12 }, ['Cracked Nether Bricks'] = { pos = 271, section = 16 }, ['Cracked Polished Blackstone Bricks'] = { pos = 272, section = 16 }, ['Cracked Stone Bricks'] = { pos = 3361, section = 15 }, ['Cracked Stone Bricks Monster Egg'] = { pos = 3361, section = 15 }, ['Crafting Table'] = { pos = 3601, section = 26 }, ['Creeper Head'] = { pos = 964, section = 14 }, ['Creeper Head BE'] = { pos = 215, section = 14 }, ['Creeper Spawn Egg'] = { pos = 1147, section = 24 }, ['Creeper Spawn Egg Revision 1'] = { pos = 1386, section = 39 }, ['Crimson Button'] = { pos = 167, section = 13 }, ['Crimson Door'] = { pos = 168, section = 13 }, ['Crimson Fence'] = { pos = 648, section = 12 }, ['Crimson Fence BE'] = { pos = 161, section = 12 }, ['Crimson Fence Gate'] = { pos = 179, section = 13 }, ['Crimson Fence Gate BE'] = { pos = 379, section = 13 }, ['Crimson Fungus'] = { pos = 158, section = 16 }, ['Crimson Hanging Sign'] = { pos = 652, section = 5 }, ['Crimson Hyphae'] = { pos = 198, section = 16 }, ['Crimson Nylium'] = { pos = 149, section = 16 }, ['Crimson Planks'] = { pos = 146, section = 12 }, ['Crimson Pressure Plate'] = { pos = 169, section = 13 }, ['Crimson Roots'] = { pos = 190, section = 16 }, ['Crimson Sign'] = { pos = 177, section = 17 }, ['Crimson Slab'] = { pos = 162, section = 12 }, ['Crimson Stairs'] = { pos = 163, section = 12 }, ['Crimson Stem'] = { pos = 150, section = 16 }, ['Crimson Trapdoor'] = { pos = 170, section = 13 }, Crossbow = { pos = 2382, section = 28 }, ['Crude Oil'] = { pos = 1891, section = 35 }, ['Crying Obsidian'] = { pos = 197, section = 16 }, ['Crying Obsidian BE'] = { pos = 509, section = 16 }, ['Crystallized Honey'] = { pos = 95, section = 30 }, Cuprum = { pos = 1797, section = 34 }, Curium = { pos = 1798, section = 34 }, ['Cut Copper'] = { pos = 402, section = 12 }, ['Cut Copper Block'] = { pos = 402, section = 12 }, ['Cut Copper Slab'] = { pos = 403, section = 12 }, ['Cut Copper Stairs'] = { pos = 404, section = 12 }, ['Cut Red Sandstone'] = { pos = 3249, section = 12 }, ['Cut Red Sandstone Slab'] = { pos = 2466, section = 12 }, ['Cut Sandstone'] = { pos = 3250, section = 12 }, ['Cut Sandstone Slab'] = { pos = 2467, section = 12 }, ['Cyan Balloon'] = { pos = 1932, section = 33 }, ['Cyan Banner'] = { pos = 722, section = 7 }, ['Cyan Banner 15w14a'] = { pos = 475, section = 32 }, ['Cyan Base Banner'] = { pos = 2644, section = 2 }, ['Cyan Base Dexter Canton Banner'] = { pos = 2645, section = 2 }, ['Cyan Base Gradient Banner'] = { pos = 2646, section = 2 }, ['Cyan Base Indented Banner'] = { pos = 2647, section = 2 }, ['Cyan Base Sinister Canton Banner'] = { pos = 2648, section = 2 }, ['Cyan Bed'] = { pos = 3174, section = 7 }, ['Cyan Bed BE'] = { pos = 1548, section = 7 }, ['Cyan Bed LCE'] = { pos = 1548, section = 7 }, ['Cyan Bend Banner'] = { pos = 2649, section = 2 }, ['Cyan Bend Sinister Banner'] = { pos = 2650, section = 2 }, ['Cyan Bordure Banner'] = { pos = 2651, section = 2 }, ['Cyan Bordure Indented Banner'] = { pos = 2652, section = 2 }, ['Cyan Candle'] = { pos = 405, section = 7 }, ['Cyan Carpet'] = { pos = 1624, section = 7 }, ['Cyan Carpet Revision 1'] = { pos = 723, section = 40 }, ['Cyan Chevron Banner'] = { pos = 2653, section = 2 }, ['Cyan Chief Banner'] = { pos = 2655, section = 2 }, ['Cyan Chief Dexter Canton Banner'] = { pos = 2656, section = 2 }, ['Cyan Chief Indented Banner'] = { pos = 2657, section = 2 }, ['Cyan Chief Sinister Canton Banner'] = { pos = 2658, section = 2 }, ['Cyan Cloth'] = { pos = 229, section = 40 }, ['Cyan Concrete'] = { pos = 1484, section = 7 }, ['Cyan Concrete Powder'] = { pos = 1485, section = 7 }, ['Cyan Creeper Charge Banner'] = { pos = 2659, section = 2 }, ['Cyan Cross Banner'] = { pos = 2660, section = 2 }, ['Cyan Dye'] = { pos = 3157, section = 6 }, ['Cyan Fess Banner'] = { pos = 2661, section = 2 }, ['Cyan Field Masoned Banner'] = { pos = 2662, section = 2 }, ['Cyan Firework Star'] = { pos = 807, section = 9 }, ['Cyan Flower Charge Banner'] = { pos = 2663, section = 2 }, ['Cyan Glazed Terracotta'] = { pos = 1540, section = 7 }, ['Cyan Glazed Terracotta Revision 1'] = { pos = 1486, section = 40 }, ['Cyan Globe Banner'] = { pos = 38, section = 2 }, ['Cyan Glow Stick'] = { pos = 1979, section = 33 }, ['Cyan Gradient Banner'] = { pos = 2664, section = 2 }, ['Cyan Inverted Chevron Banner'] = { pos = 2654, section = 2 }, ['Cyan Lozenge Banner'] = { pos = 2665, section = 2 }, ['Cyan Pale Banner'] = { pos = 2666, section = 2 }, ['Cyan Pale Dexter Banner'] = { pos = 2667, section = 2 }, ['Cyan Pale Sinister Banner'] = { pos = 2668, section = 2 }, ['Cyan Paly Banner'] = { pos = 2669, section = 2 }, ['Cyan Per Bend Banner'] = { pos = 2670, section = 2 }, ['Cyan Per Bend Inverted Banner'] = { pos = 2671, section = 2 }, ['Cyan Per Bend Sinister Banner'] = { pos = 2672, section = 2 }, ['Cyan Per Bend Sinister Inverted Banner'] = { pos = 2673, section = 2 }, ['Cyan Per Fess Banner'] = { pos = 2674, section = 2 }, ['Cyan Per Fess Inverted Banner'] = { pos = 2675, section = 2 }, ['Cyan Per Pale Banner'] = { pos = 2676, section = 2 }, ['Cyan Per Pale Inverted Banner'] = { pos = 2677, section = 2 }, ['Cyan Piglin Banner'] = { pos = 362, section = 2 }, ['Cyan Roundel Banner'] = { pos = 2678, section = 2 }, ['Cyan Saltire Banner'] = { pos = 2679, section = 2 }, ['Cyan Shield'] = { pos = 2477, section = 1 }, ['Cyan Shulker Box'] = { pos = 1606, section = 7 }, ['Cyan Shulker Box Revision 1'] = { pos = 1419, section = 40 }, ['Cyan Skull Charge Banner'] = { pos = 2680, section = 2 }, ['Cyan Snout Banner'] = { pos = 362, section = 2 }, ['Cyan Stained Glass'] = { pos = 725, section = 7 }, ['Cyan Stained Glass Pane'] = { pos = 726, section = 7 }, ['Cyan Stained Glass Pane BE'] = { pos = 2011, section = 7 }, ['Cyan Terracotta'] = { pos = 724, section = 7 }, ['Cyan Thing Banner'] = { pos = 2681, section = 2 }, ['Cyan Tinted Glass'] = { pos = 1298, section = 40 }, ['Cyan Tinted Glass Pane'] = { pos = 6, section = 40 }, ['Cyan Wood Planks'] = { pos = 247, section = 30 }, ['Cyan Wool'] = { pos = 1526, section = 7 }, ['Cyan Wool Revision 2'] = { pos = 727, section = 40 }, Cyanoacrylate = { pos = 1750, section = 33 }, ['Damaged Anvil'] = { pos = 3602, section = 26 }, ['Damaged Arrow Loaded Crossbow'] = { pos = 2384, section = 28 }, ['Damaged Bow'] = { pos = 1281, section = 28 }, ['Damaged Brush'] = { pos = 1209, section = 25 }, ['Damaged Carrot on a Stick'] = { pos = 3535, section = 25 }, ['Damaged Chainmail Boots'] = { pos = 2478, section = 1 }, ['Damaged Chainmail Chestplate'] = { pos = 2479, section = 1 }, ['Damaged Chainmail Helmet'] = { pos = 2480, section = 1 }, ['Damaged Chainmail Leggings'] = { pos = 2481, section = 1 }, ['Damaged Crossbow'] = { pos = 2385, section = 28 }, ['Damaged Diamond Axe'] = { pos = 3536, section = 25 }, ['Damaged Diamond Boots'] = { pos = 2482, section = 1 }, ['Damaged Diamond Chestplate'] = { pos = 2483, section = 1 }, ['Damaged Diamond Helmet'] = { pos = 2484, section = 1 }, ['Damaged Diamond Hoe'] = { pos = 3537, section = 25 }, ['Damaged Diamond Leggings'] = { pos = 2485, section = 1 }, ['Damaged Diamond Pickaxe'] = { pos = 3538, section = 25 }, ['Damaged Diamond Shovel'] = { pos = 3539, section = 25 }, ['Damaged Diamond Sword'] = { pos = 3630, section = 28 }, ['Damaged Elytra'] = { pos = 2486, section = 1 }, ['Damaged Firework Loaded Crossbow'] = { pos = 2386, section = 28 }, ['Damaged Fishing Rod'] = { pos = 3540, section = 25 }, ['Damaged Flint and Steel'] = { pos = 3541, section = 25 }, ['Damaged Golden Axe'] = { pos = 3542, section = 25 }, ['Damaged Golden Boots'] = { pos = 2487, section = 1 }, ['Damaged Golden Chestplate'] = { pos = 2488, section = 1 }, ['Damaged Golden Helmet'] = { pos = 2489, section = 1 }, ['Damaged Golden Hoe'] = { pos = 3543, section = 25 }, ['Damaged Golden Leggings'] = { pos = 2490, section = 1 }, ['Damaged Golden Pickaxe'] = { pos = 3544, section = 25 }, ['Damaged Golden Shovel'] = { pos = 3545, section = 25 }, ['Damaged Golden Sword'] = { pos = 3631, section = 28 }, ['Damaged Iron Axe'] = { pos = 3546, section = 25 }, ['Damaged Iron Boots'] = { pos = 2491, section = 1 }, ['Damaged Iron Chestplate'] = { pos = 2492, section = 1 }, ['Damaged Iron Helmet'] = { pos = 2493, section = 1 }, ['Damaged Iron Hoe'] = { pos = 3547, section = 25 }, ['Damaged Iron Leggings'] = { pos = 2494, section = 1 }, ['Damaged Iron Pickaxe'] = { pos = 3548, section = 25 }, ['Damaged Iron Shovel'] = { pos = 3549, section = 25 }, ['Damaged Iron Sword'] = { pos = 3632, section = 28 }, ['Damaged Leather Boots'] = { pos = 2495, section = 1 }, ['Damaged Leather Cap'] = { pos = 2496, section = 1 }, ['Damaged Leather Pants'] = { pos = 2497, section = 1 }, ['Damaged Leather Tunic'] = { pos = 2498, section = 1 }, ['Damaged Netherite Axe'] = { pos = 181, section = 25 }, ['Damaged Netherite Boots'] = { pos = 182, section = 1 }, ['Damaged Netherite Chestplate'] = { pos = 183, section = 1 }, ['Damaged Netherite Helmet'] = { pos = 184, section = 1 }, ['Damaged Netherite Hoe'] = { pos = 185, section = 25 }, ['Damaged Netherite Leggings'] = { pos = 186, section = 1 }, ['Damaged Netherite Pickaxe'] = { pos = 187, section = 25 }, ['Damaged Netherite Shovel'] = { pos = 188, section = 25 }, ['Damaged Netherite Sword'] = { pos = 189, section = 28 }, ['Damaged Shears'] = { pos = 3550, section = 25 }, ['Damaged Shield'] = { pos = 2499, section = 1 }, ['Damaged Stone Axe'] = { pos = 3551, section = 25 }, ['Damaged Stone Hoe'] = { pos = 3552, section = 25 }, ['Damaged Stone Pickaxe'] = { pos = 3553, section = 25 }, ['Damaged Stone Shovel'] = { pos = 3554, section = 25 }, ['Damaged Stone Sword'] = { pos = 3633, section = 28 }, ['Damaged Trident'] = { pos = 100, section = 28 }, ['Damaged Turtle Shell'] = { pos = 2456, section = 1 }, ['Damaged Warped Fungus on a Stick'] = { pos = 382, section = 25 }, ['Damaged Wooden Axe'] = { pos = 3555, section = 25 }, ['Damaged Wooden Hoe'] = { pos = 3556, section = 25 }, ['Damaged Wooden Pickaxe'] = { pos = 3557, section = 25 }, ['Damaged Wooden Shovel'] = { pos = 3558, section = 25 }, ['Damaged Wooden Sword'] = { pos = 3634, section = 28 }, Dandelion = { pos = 3414, section = 19 }, ['Dandelion Yellow'] = { pos = 692, section = 6 }, ['Danger Pottery Sherd'] = { pos = 1224, section = 44 }, ['Dark Gray Beaker'] = { pos = 1894, section = 35 }, ['Dark Gray Cloth'] = { pos = 230, section = 40 }, ['Dark Gray Flask'] = { pos = 1905, section = 36 }, ['Dark Gray Jar'] = { pos = 1919, section = 37 }, ['Dark Oak Boat'] = { pos = 638, section = 27 }, ['Dark Oak Boat Revision 2'] = { pos = 3620, section = 29 }, ['Dark Oak Boat with Chest'] = { pos = 614, section = 27 }, ['Dark Oak Button'] = { pos = 3332, section = 13 }, ['Dark Oak Door'] = { pos = 568, section = 13 }, ['Dark Oak Door Revision 3'] = { pos = 939, section = 13 }, ['Dark Oak Fence'] = { pos = 646, section = 12 }, ['Dark Oak Fence BE'] = { pos = 3252, section = 12 }, ['Dark Oak Fence Gate'] = { pos = 3251, section = 13 }, ['Dark Oak Fence Gate BE'] = { pos = 54, section = 13 }, ['Dark Oak Hanging Sign'] = { pos = 653, section = 5 }, ['Dark Oak Leaves'] = { pos = 3415, section = 19 }, ['Dark Oak Log'] = { pos = 3416, section = 19 }, ['Dark Oak Planks'] = { pos = 881, section = 12 }, ['Dark Oak Pressure Plate'] = { pos = 3333, section = 13 }, ['Dark Oak Sapling'] = { pos = 3417, section = 19 }, ['Dark Oak Sign'] = { pos = 2397, section = 17 }, ['Dark Oak Slab'] = { pos = 3253, section = 12 }, ['Dark Oak Stairs'] = { pos = 3254, section = 12 }, ['Dark Oak Trapdoor'] = { pos = 1651, section = 13 }, ['Dark Oak Wood'] = { pos = 3255, section = 12 }, ['Dark Oak Wood Button'] = { pos = 3332, section = 13 }, ['Dark Oak Wood Door'] = { pos = 568, section = 13 }, ['Dark Oak Wood Fence'] = { pos = 646, section = 12 }, ['Dark Oak Wood Fence Gate'] = { pos = 3251, section = 13 }, ['Dark Oak Wood Planks'] = { pos = 881, section = 12 }, ['Dark Oak Wood Pressure Plate'] = { pos = 3333, section = 13 }, ['Dark Oak Wood Sign'] = { pos = 2397, section = 17 }, ['Dark Oak Wood Slab'] = { pos = 3253, section = 12 }, ['Dark Oak Wood Stairs'] = { pos = 3254, section = 12 }, ['Dark Oak Wood Trapdoor'] = { pos = 1651, section = 13 }, ['Dark Prismarine'] = { pos = 3362, section = 15 }, ['Dark Prismarine Slab'] = { pos = 3256, section = 12 }, ['Dark Prismarine Stairs'] = { pos = 3257, section = 12 }, Darmstadtium = { pos = 1799, section = 34 }, ['Daylight Detector'] = { pos = 1242, section = 26 }, ['Daylight Sensor'] = { pos = 1242, section = 26 }, ['Dead Brain Coral'] = { pos = 2368, section = 15 }, ['Dead Brain Coral Block'] = { pos = 1718, section = 15 }, ['Dead Brain Coral Fan'] = { pos = 2146, section = 15 }, ['Dead Brain Coral Fan Revision 1'] = { pos = 1737, section = 29 }, ['Dead Bubble Coral'] = { pos = 2369, section = 15 }, ['Dead Bubble Coral Block'] = { pos = 1719, section = 15 }, ['Dead Bubble Coral Fan'] = { pos = 2147, section = 15 }, ['Dead Bubble Coral Fan Revision 1'] = { pos = 1738, section = 29 }, ['Dead Bush'] = { pos = 3418, section = 19 }, ['Dead Coral'] = { pos = 1701, section = 29 }, ['Dead Fire Coral'] = { pos = 2370, section = 15 }, ['Dead Fire Coral Block'] = { pos = 1720, section = 15 }, ['Dead Fire Coral Fan'] = { pos = 2148, section = 15 }, ['Dead Fire Coral Fan Revision 1'] = { pos = 1739, section = 29 }, ['Dead Horn Coral'] = { pos = 2371, section = 15 }, ['Dead Horn Coral Block'] = { pos = 1721, section = 15 }, ['Dead Horn Coral Fan'] = { pos = 2149, section = 15 }, ['Dead Horn Coral Fan Revision 1'] = { pos = 1740, section = 29 }, ['Dead Tube Coral'] = { pos = 2367, section = 15 }, ['Dead Tube Coral Block'] = { pos = 1717, section = 15 }, ['Dead Tube Coral Fan'] = { pos = 2150, section = 15 }, ['Dead Tube Coral Fan Revision 1'] = { pos = 1741, section = 29 }, ['Debug Stick'] = { pos = 1140, section = 23 }, ['Decorated Pot'] = { pos = 1180, section = 5 }, Deepslate = { pos = 503, section = 15 }, ['Deepslate Brick Slab'] = { pos = 490, section = 12 }, ['Deepslate Brick Stairs'] = { pos = 491, section = 12 }, ['Deepslate Brick Wall'] = { pos = 492, section = 12 }, ['Deepslate Brick Wall BE'] = { pos = 563, section = 12 }, ['Deepslate Bricks'] = { pos = 493, section = 12 }, ['Deepslate Coal Ore'] = { pos = 522, section = 18 }, ['Deepslate Copper Ore'] = { pos = 523, section = 18 }, ['Deepslate Diamond Ore'] = { pos = 514, section = 18 }, ['Deepslate Emerald Ore'] = { pos = 524, section = 18 }, ['Deepslate Gold Ore'] = { pos = 515, section = 18 }, ['Deepslate Iron Ore'] = { pos = 516, section = 18 }, ['Deepslate Lapis Lazuli Ore'] = { pos = 517, section = 18 }, ['Deepslate Redstone Ore'] = { pos = 518, section = 18 }, ['Deepslate Tile Slab'] = { pos = 496, section = 12 }, ['Deepslate Tile Stairs'] = { pos = 497, section = 12 }, ['Deepslate Tile Wall'] = { pos = 498, section = 12 }, ['Deepslate Tile Wall BE'] = { pos = 561, section = 12 }, ['Deepslate Tiles'] = { pos = 499, section = 12 }, Deny = { pos = 1436, section = 20 }, ['Desert Village Map'] = { pos = 1326, section = 25 }, ['Desert Village Map BE'] = { pos = 1327, section = 25 }, ['Detector Rail'] = { pos = 3334, section = 13 }, Diamond = { pos = 3508, section = 23 }, ['Diamond Axe'] = { pos = 3559, section = 25 }, ['Diamond Boots'] = { pos = 2500, section = 1 }, ['Diamond Chestplate'] = { pos = 2501, section = 1 }, ['Diamond Drows'] = { pos = 1320, section = 32 }, ['Diamond Heart'] = { pos = 118, section = 32 }, ['Diamond Helmet'] = { pos = 2502, section = 1 }, ['Diamond Hoe'] = { pos = 3560, section = 25 }, ['Diamond Horse Armor'] = { pos = 29, section = 1 }, ['Diamond Leggings'] = { pos = 2503, section = 1 }, ['Diamond Ore'] = { pos = 3392, section = 18 }, ['Diamond Pickaxe'] = { pos = 3561, section = 25 }, ['Diamond Shovel'] = { pos = 3562, section = 25 }, ['Diamond Sword'] = { pos = 3635, section = 28 }, ['Diamond Trim Chainmail Boots'] = { pos = 894, section = 43 }, ['Diamond Trim Chainmail Chestplate'] = { pos = 895, section = 43 }, ['Diamond Trim Chainmail Helmet'] = { pos = 897, section = 43 }, ['Diamond Trim Chainmail Leggings'] = { pos = 898, section = 43 }, ['Diamond Trim Diamond Boots'] = { pos = 899, section = 43 }, ['Diamond Trim Diamond Chestplate'] = { pos = 900, section = 43 }, ['Diamond Trim Diamond Helmet'] = { pos = 902, section = 43 }, ['Diamond Trim Diamond Leggings'] = { pos = 905, section = 43 }, ['Diamond Trim Golden Boots'] = { pos = 912, section = 43 }, ['Diamond Trim Golden Chestplate'] = { pos = 913, section = 43 }, ['Diamond Trim Golden Helmet'] = { pos = 914, section = 43 }, ['Diamond Trim Golden Leggings'] = { pos = 915, section = 43 }, ['Diamond Trim Iron Boots'] = { pos = 916, section = 43 }, ['Diamond Trim Iron Chestplate'] = { pos = 917, section = 43 }, ['Diamond Trim Iron Helmet'] = { pos = 918, section = 43 }, ['Diamond Trim Iron Leggings'] = { pos = 919, section = 43 }, ['Diamond Trim Leather Boots'] = { pos = 921, section = 43 }, ['Diamond Trim Leather Cap'] = { pos = 922, section = 43 }, ['Diamond Trim Leather Pants'] = { pos = 924, section = 43 }, ['Diamond Trim Leather Tunic'] = { pos = 925, section = 43 }, ['Diamond Trim Netherite Boots'] = { pos = 926, section = 43 }, ['Diamond Trim Netherite Chestplate'] = { pos = 927, section = 43 }, ['Diamond Trim Netherite Helmet'] = { pos = 928, section = 43 }, ['Diamond Trim Netherite Leggings'] = { pos = 930, section = 43 }, ['Diamond Trim Turtle Shell'] = { pos = 931, section = 43 }, Diorite = { pos = 3363, section = 15 }, ['Diorite Slab'] = { pos = 3258, section = 12 }, ['Diorite Stairs'] = { pos = 3259, section = 12 }, ['Diorite Wall'] = { pos = 3260, section = 12 }, ['Diorite Wall BE'] = { pos = 23, section = 12 }, Dirt = { pos = 979, section = 15 }, ['Dirt Path'] = { pos = 1348, section = 15 }, ['Disc Fragment 5'] = { pos = 631, section = 23 }, Dispenser = { pos = 3603, section = 26 }, ['Dispenser Revision 1'] = { pos = 2239, section = 29 }, ['Dolphin Spawn Egg'] = { pos = 1967, section = 24 }, ['Donkey Spawn Egg'] = { pos = 1371, section = 24 }, ['Donkey Spawn Egg Revision 1'] = { pos = 1152, section = 24 }, ['Double Smooth Stone Slab'] = { pos = 884, section = 12 }, ['Double Tag'] = { pos = 1250, section = 32 }, ['Dragon Egg'] = { pos = 3187, section = 8 }, ['Dragon Egg BE'] = { pos = 506, section = 8 }, ['Dragon Head'] = { pos = 965, section = 14 }, ['Dragon Head BE'] = { pos = 216, section = 14 }, ['Dragon Head BE Revision 1'] = { pos = 108, section = 29 }, ["Dragon's Breath"] = { pos = 3138, section = 3 }, ['Dried Kelp'] = { pos = 1682, section = 10 }, ['Dried Kelp Block'] = { pos = 1669, section = 12 }, ['Dripstone Block'] = { pos = 435, section = 15 }, Dropper = { pos = 3604, section = 26 }, ['Drowned Spawn Egg'] = { pos = 1727, section = 24 }, Dubnium = { pos = 1800, section = 34 }, ['Dune Armor Trim'] = { pos = 702, section = 41 }, ['Dune Armor Trim Smithing Template'] = { pos = 702, section = 41 }, ['Dupe Hack'] = { pos = 1321, section = 32 }, Dysprosium = { pos = 1801, section = 34 }, ['Earth Ruby'] = { pos = 130, section = 38 }, ['Echo Shard'] = { pos = 622, section = 23 }, Egg = { pos = 3205, section = 10 }, Einsteinium = { pos = 1802, section = 34 }, ['Elder Guardian Spawn Egg'] = { pos = 1372, section = 24 }, ['Element Constructor'] = { pos = 1933, section = 33 }, Elixir = { pos = 1751, section = 33 }, Elytra = { pos = 2504, section = 1 }, Emerald = { pos = 3509, section = 23 }, ['Emerald Ore'] = { pos = 3393, section = 18 }, ['Emerald Trim Chainmail Boots'] = { pos = 932, section = 43 }, ['Emerald Trim Chainmail Chestplate'] = { pos = 934, section = 43 }, ['Emerald Trim Chainmail Helmet'] = { pos = 936, section = 43 }, ['Emerald Trim Chainmail Leggings'] = { pos = 938, section = 43 }, ['Emerald Trim Diamond Boots'] = { pos = 940, section = 43 }, ['Emerald Trim Diamond Chestplate'] = { pos = 943, section = 43 }, ['Emerald Trim Diamond Helmet'] = { pos = 944, section = 43 }, ['Emerald Trim Diamond Leggings'] = { pos = 946, section = 43 }, ['Emerald Trim Golden Boots'] = { pos = 947, section = 43 }, ['Emerald Trim Golden Chestplate'] = { pos = 948, section = 43 }, ['Emerald Trim Golden Helmet'] = { pos = 949, section = 43 }, ['Emerald Trim Golden Leggings'] = { pos = 950, section = 43 }, ['Emerald Trim Iron Boots'] = { pos = 951, section = 43 }, ['Emerald Trim Iron Chestplate'] = { pos = 952, section = 43 }, ['Emerald Trim Iron Helmet'] = { pos = 953, section = 43 }, ['Emerald Trim Iron Leggings'] = { pos = 955, section = 43 }, ['Emerald Trim Leather Boots'] = { pos = 956, section = 43 }, ['Emerald Trim Leather Cap'] = { pos = 957, section = 43 }, ['Emerald Trim Leather Pants'] = { pos = 959, section = 43 }, ['Emerald Trim Leather Tunic'] = { pos = 960, section = 43 }, ['Emerald Trim Netherite Boots'] = { pos = 961, section = 43 }, ['Emerald Trim Netherite Chestplate'] = { pos = 962, section = 43 }, ['Emerald Trim Netherite Helmet'] = { pos = 963, section = 43 }, ['Emerald Trim Netherite Leggings'] = { pos = 970, section = 43 }, ['Emerald Trim Turtle Shell'] = { pos = 972, section = 43 }, ['Empty Locator Map'] = { pos = 3563, section = 25 }, ['Empty Map'] = { pos = 3563, section = 25 }, ['Enchanted Apple'] = { pos = 3206, section = 10 }, ['Enchanted Book'] = { pos = 3564, section = 25 }, ['Enchanted Golden Apple'] = { pos = 3206, section = 10 }, ['Enchanting Table'] = { pos = 3605, section = 26 }, ['Enchanting Table BE'] = { pos = 214, section = 26 }, ['Enchantment Table'] = { pos = 3605, section = 26 }, ['End Crystal'] = { pos = 3188, section = 8 }, ['End Gateway'] = { pos = 1561, section = 8 }, ['End Gateway BE'] = { pos = 352, section = 8 }, ['End Portal'] = { pos = 1010, section = 17 }, ['End Portal BE'] = { pos = 353, section = 8 }, ['End Portal Frame'] = { pos = 3189, section = 8 }, ['End Portal Frame BE'] = { pos = 507, section = 8 }, ['End Rod'] = { pos = 3190, section = 8 }, ['End Rod BE'] = { pos = 208, section = 8 }, ['End Stone'] = { pos = 3191, section = 8 }, ['End Stone Brick Slab'] = { pos = 2418, section = 12 }, ['End Stone Brick Stairs'] = { pos = 2419, section = 12 }, ['End Stone Brick Wall'] = { pos = 2401, section = 12 }, ['End Stone Brick Wall BE'] = { pos = 24, section = 12 }, ['End Stone Bricks'] = { pos = 3261, section = 12 }, ['Ender Chest'] = { pos = 3606, section = 26 }, ['Ender Chest BE'] = { pos = 2372, section = 26 }, ['Ender Dragon Spawn Egg'] = { pos = 695, section = 24 }, ['Ender Pearl'] = { pos = 3510, section = 23 }, ['Enderman Spawn Egg'] = { pos = 1148, section = 24 }, ['Enderman Spawn Egg Revision 1'] = { pos = 1387, section = 39 }, ['Endermite Spawn Egg'] = { pos = 1149, section = 24 }, Erbium = { pos = 1803, section = 34 }, ['Etho Slab'] = { pos = 2117, section = 32 }, Europium = { pos = 1804, section = 34 }, ['Evoker Spawn Egg'] = { pos = 1411, section = 24 }, ['Explorer Pottery Sherd'] = { pos = 1225, section = 44 }, ['Exposed Copper'] = { pos = 411, section = 12 }, ['Exposed Copper Block'] = { pos = 411, section = 12 }, ['Exposed Cut Copper'] = { pos = 412, section = 12 }, ['Exposed Cut Copper Block'] = { pos = 412, section = 12 }, ['Exposed Cut Copper Slab'] = { pos = 413, section = 12 }, ['Exposed Cut Copper Stairs'] = { pos = 414, section = 12 }, ['Eye Armor Trim'] = { pos = 800, section = 41 }, ['Eye Armor Trim Smithing Template'] = { pos = 800, section = 41 }, ['Eye Drops'] = { pos = 1752, section = 33 }, ['Eye of Ender'] = { pos = 3565, section = 25 }, ['Fancy Feather'] = { pos = 384, section = 38 }, Farmland = { pos = 886, section = 12 }, Feather = { pos = 3511, section = 23 }, ['Fermented Spider Eye'] = { pos = 3139, section = 3 }, Fermium = { pos = 1805, section = 34 }, Fern = { pos = 3419, section = 19 }, Ferrum = { pos = 1806, section = 34 }, ['Filled Bundle'] = { pos = 429, section = 25 }, ['Finished Nether Reactor Core'] = { pos = 1601, section = 20 }, ['Finished Nether Reactor Core Revision 1'] = { pos = 1598, section = 29 }, ['Fire Charge'] = { pos = 3566, section = 25 }, ['Fire Coral'] = { pos = 1714, section = 15 }, ['Fire Coral Block'] = { pos = 1709, section = 15 }, ['Fire Coral Block Revision 1'] = { pos = 1704, section = 29 }, ['Fire Coral Fan'] = { pos = 1725, section = 15 }, ['Fire Coral Fan Revision 1'] = { pos = 2139, section = 29 }, ['Fire Coral Revision 1'] = { pos = 2140, section = 29 }, ['Firefly Spawn Egg'] = { pos = 632, section = 24 }, ['Firework Loaded Crossbow'] = { pos = 2387, section = 28 }, ['Firework Rocket'] = { pos = 3192, section = 9 }, ['Firework Star'] = { pos = 809, section = 9 }, ['Fishing Rod'] = { pos = 3567, section = 25 }, Flask = { pos = 1906, section = 36 }, Flerovium = { pos = 1807, section = 34 }, ['Fletching Table'] = { pos = 2453, section = 26 }, ['Fletching Table Revision 1'] = { pos = 2444, section = 26 }, Flint = { pos = 3512, section = 23 }, ['Flint and Steel'] = { pos = 3568, section = 25 }, ['Float Tag'] = { pos = 1252, section = 32 }, ['Flower Pot'] = { pos = 3151, section = 5 }, ['Flowering Azalea'] = { pos = 467, section = 19 }, ['Flowering Azalea Leaves'] = { pos = 468, section = 19 }, ['Flowing Lava'] = { pos = 2129, section = 11 }, ['Flowing Lava BE Revision 2'] = { pos = 2130, section = 29 }, ['Flowing Water'] = { pos = 2127, section = 11 }, ['Flowing Water BE'] = { pos = 2128, section = 11 }, ['Flowing Water Revision 2'] = { pos = 851, section = 29 }, Fluorine = { pos = 1808, section = 34 }, Footprint = { pos = 266, section = 32 }, ['Fox Spawn Egg'] = { pos = 2464, section = 24 }, Francium = { pos = 1809, section = 34 }, ['Friend Pottery Sherd'] = { pos = 1226, section = 44 }, ['Frog Spawn'] = { pos = 574, section = 5 }, ['Frog Spawn Egg'] = { pos = 575, section = 24 }, Frogspawn = { pos = 574, section = 5 }, ['Frosted Ice'] = { pos = 984, section = 15 }, Furnace = { pos = 3607, section = 26 }, Gadolinium = { pos = 1810, section = 34 }, Gallium = { pos = 1811, section = 34 }, Garbage = { pos = 1753, section = 33 }, Germanium = { pos = 1812, section = 34 }, ['Ghast Spawn Egg'] = { pos = 1150, section = 24 }, ['Ghast Spawn Egg Revision 1'] = { pos = 1388, section = 39 }, ['Ghast Tear'] = { pos = 3140, section = 3 }, ['Gilded Blackstone'] = { pos = 273, section = 16 }, Glass = { pos = 3263, section = 12 }, ['Glass Bottle'] = { pos = 3569, section = 25 }, ['Glass Pane'] = { pos = 3262, section = 12 }, ['Glass Pane BE'] = { pos = 2025, section = 12 }, ['Glistering Melon'] = { pos = 659, section = 3 }, ['Glistering Melon Slice'] = { pos = 3141, section = 3 }, ['Glow Berries'] = { pos = 460, section = 10 }, ['Glow Ink Sac'] = { pos = 456, section = 23 }, ['Glow Item Frame'] = { pos = 454, section = 5 }, ['Glow Lichen'] = { pos = 455, section = 19 }, ['Glow Squid Spawn Egg'] = { pos = 457, section = 24 }, ['Glowing Obsidian'] = { pos = 1080, section = 20 }, Glowstone = { pos = 3382, section = 16 }, ['Glowstone BE'] = { pos = 210, section = 16 }, ['Glowstone Dust'] = { pos = 3513, section = 23 }, Glue = { pos = 1750, section = 33 }, ['Goat Horn'] = { pos = 390, section = 25 }, ['Goat Spawn Egg'] = { pos = 392, section = 24 }, Gold = { pos = 1779, section = 34 }, ['Gold Heart'] = { pos = 119, section = 32 }, ['Gold Ingot'] = { pos = 3514, section = 23 }, ['Gold Nugget'] = { pos = 3515, section = 23 }, ['Gold Ore'] = { pos = 3394, section = 18 }, ['Gold Trim Chainmail Boots'] = { pos = 973, section = 43 }, ['Gold Trim Chainmail Chestplate'] = { pos = 975, section = 43 }, ['Gold Trim Chainmail Helmet'] = { pos = 976, section = 43 }, ['Gold Trim Chainmail Leggings'] = { pos = 977, section = 43 }, ['Gold Trim Diamond Boots'] = { pos = 978, section = 43 }, ['Gold Trim Diamond Chestplate'] = { pos = 980, section = 43 }, ['Gold Trim Diamond Helmet'] = { pos = 982, section = 43 }, ['Gold Trim Diamond Leggings'] = { pos = 983, section = 43 }, ['Gold Trim Golden Boots'] = { pos = 987, section = 43 }, ['Gold Trim Golden Chestplate'] = { pos = 988, section = 43 }, ['Gold Trim Golden Helmet'] = { pos = 989, section = 43 }, ['Gold Trim Golden Leggings'] = { pos = 990, section = 43 }, ['Gold Trim Iron Boots'] = { pos = 991, section = 43 }, ['Gold Trim Iron Chestplate'] = { pos = 992, section = 43 }, ['Gold Trim Iron Helmet'] = { pos = 993, section = 43 }, ['Gold Trim Iron Leggings'] = { pos = 994, section = 43 }, ['Gold Trim Leather Boots'] = { pos = 995, section = 43 }, ['Gold Trim Leather Cap'] = { pos = 996, section = 43 }, ['Gold Trim Leather Pants'] = { pos = 997, section = 43 }, ['Gold Trim Leather Tunic'] = { pos = 998, section = 43 }, ['Gold Trim Netherite Boots'] = { pos = 1001, section = 43 }, ['Gold Trim Netherite Chestplate'] = { pos = 1002, section = 43 }, ['Gold Trim Netherite Helmet'] = { pos = 1004, section = 43 }, ['Gold Trim Netherite Leggings'] = { pos = 1005, section = 43 }, ['Gold Trim Turtle Shell'] = { pos = 1006, section = 43 }, ['Golden Apple'] = { pos = 3206, section = 10 }, ['Golden Axe'] = { pos = 3570, section = 25 }, ['Golden Boots'] = { pos = 2505, section = 1 }, ['Golden Carrot'] = { pos = 3142, section = 3 }, ['Golden Chestplate'] = { pos = 2506, section = 1 }, ['Golden Helmet'] = { pos = 2507, section = 1 }, ['Golden Hoe'] = { pos = 3571, section = 25 }, ['Golden Horse Armor'] = { pos = 34, section = 1 }, ['Golden Leggings'] = { pos = 2508, section = 1 }, ['Golden Pickaxe'] = { pos = 3572, section = 25 }, ['Golden Shovel'] = { pos = 3573, section = 25 }, ['Golden Sword'] = { pos = 3636, section = 28 }, Granite = { pos = 3364, section = 15 }, ['Granite Slab'] = { pos = 2420, section = 12 }, ['Granite Stairs'] = { pos = 2421, section = 12 }, ['Granite Wall'] = { pos = 2402, section = 12 }, ['Granite Wall BE'] = { pos = 25, section = 12 }, Grass = { pos = 3420, section = 19 }, ['Grass Block'] = { pos = 981, section = 15 }, ['Grass Block Revision 1'] = { pos = 2312, section = 29 }, ['Grass Block Revision 2'] = { pos = 2359, section = 29 }, ['Grass Path'] = { pos = 1348, section = 15 }, Gravel = { pos = 3365, section = 15 }, ['Gray Balloon'] = { pos = 1934, section = 33 }, ['Gray Banner'] = { pos = 728, section = 7 }, ['Gray Banner 15w14a'] = { pos = 476, section = 32 }, ['Gray Base Banner'] = { pos = 2682, section = 2 }, ['Gray Base Dexter Canton Banner'] = { pos = 2683, section = 2 }, ['Gray Base Gradient Banner'] = { pos = 2684, section = 2 }, ['Gray Base Indented Banner'] = { pos = 2685, section = 2 }, ['Gray Base Sinister Canton Banner'] = { pos = 2686, section = 2 }, ['Gray Bed'] = { pos = 3175, section = 7 }, ['Gray Bed BE'] = { pos = 1549, section = 7 }, ['Gray Bed LCE'] = { pos = 1549, section = 7 }, ['Gray Bend Banner'] = { pos = 2687, section = 2 }, ['Gray Bend Sinister Banner'] = { pos = 2688, section = 2 }, ['Gray Bordure Banner'] = { pos = 2689, section = 2 }, ['Gray Bordure Indented Banner'] = { pos = 2690, section = 2 }, ['Gray Candle'] = { pos = 406, section = 7 }, ['Gray Carpet'] = { pos = 1625, section = 7 }, ['Gray Carpet Revision 1'] = { pos = 729, section = 40 }, ['Gray Chevron Banner'] = { pos = 2691, section = 2 }, ['Gray Chief Banner'] = { pos = 2692, section = 2 }, ['Gray Chief Dexter Canton Banner'] = { pos = 2693, section = 2 }, ['Gray Chief Indented Banner'] = { pos = 2694, section = 2 }, ['Gray Chief Sinister Canton Banner'] = { pos = 2695, section = 2 }, ['Gray Concrete'] = { pos = 1487, section = 7 }, ['Gray Concrete Powder'] = { pos = 1488, section = 7 }, ['Gray Creeper Charge Banner'] = { pos = 2696, section = 2 }, ['Gray Cross Banner'] = { pos = 2697, section = 2 }, ['Gray Dye'] = { pos = 3158, section = 6 }, ['Gray Fess Banner'] = { pos = 2698, section = 2 }, ['Gray Field Masoned Banner'] = { pos = 2699, section = 2 }, ['Gray Firework Star'] = { pos = 810, section = 9 }, ['Gray Flower Charge Banner'] = { pos = 2700, section = 2 }, ['Gray Glazed Terracotta'] = { pos = 1489, section = 7 }, ['Gray Globe Banner'] = { pos = 40, section = 2 }, ['Gray Glow Stick'] = { pos = 1980, section = 33 }, ['Gray Gradient Banner'] = { pos = 2701, section = 2 }, ['Gray Inverted Chevron Banner'] = { pos = 2702, section = 2 }, ['Gray Lozenge Banner'] = { pos = 2703, section = 2 }, ['Gray Pale Banner'] = { pos = 2704, section = 2 }, ['Gray Pale Dexter Banner'] = { pos = 2705, section = 2 }, ['Gray Pale Sinister Banner'] = { pos = 2706, section = 2 }, ['Gray Paly Banner'] = { pos = 2707, section = 2 }, ['Gray Per Bend Banner'] = { pos = 2708, section = 2 }, ['Gray Per Bend Inverted Banner'] = { pos = 2709, section = 2 }, ['Gray Per Bend Sinister Banner'] = { pos = 2710, section = 2 }, ['Gray Per Bend Sinister Inverted Banner'] = { pos = 2711, section = 2 }, ['Gray Per Fess Banner'] = { pos = 2712, section = 2 }, ['Gray Per Fess Inverted Banner'] = { pos = 2713, section = 2 }, ['Gray Per Pale Banner'] = { pos = 2714, section = 2 }, ['Gray Per Pale Inverted Banner'] = { pos = 2715, section = 2 }, ['Gray Piglin Banner'] = { pos = 363, section = 2 }, ['Gray Roundel Banner'] = { pos = 2716, section = 2 }, ['Gray Saltire Banner'] = { pos = 2717, section = 2 }, ['Gray Shield'] = { pos = 2509, section = 1 }, ['Gray Shulker Box'] = { pos = 1607, section = 7 }, ['Gray Shulker Box Revision 1'] = { pos = 1420, section = 40 }, ['Gray Skull Charge Banner'] = { pos = 2718, section = 2 }, ['Gray Snout Banner'] = { pos = 363, section = 2 }, ['Gray Stained Glass'] = { pos = 731, section = 7 }, ['Gray Stained Glass Pane'] = { pos = 732, section = 7 }, ['Gray Stained Glass Pane BE'] = { pos = 2012, section = 7 }, ['Gray Terracotta'] = { pos = 730, section = 7 }, ['Gray Thing Banner'] = { pos = 2719, section = 2 }, ['Gray Tinted Glass'] = { pos = 1299, section = 40 }, ['Gray Tinted Glass Pane'] = { pos = 7, section = 40 }, ['Gray Wood Planks'] = { pos = 248, section = 30 }, ['Gray Wool'] = { pos = 1527, section = 7 }, ['Gray Wool Revision 2'] = { pos = 733, section = 40 }, ['Green Balloon'] = { pos = 1935, section = 33 }, ['Green Banner'] = { pos = 734, section = 7 }, ['Green Banner 15w14a'] = { pos = 477, section = 32 }, ['Green Base Banner'] = { pos = 2720, section = 2 }, ['Green Base Dexter Canton Banner'] = { pos = 2721, section = 2 }, ['Green Base Gradient Banner'] = { pos = 2722, section = 2 }, ['Green Base Indented Banner'] = { pos = 2723, section = 2 }, ['Green Base Sinister Canton Banner'] = { pos = 2724, section = 2 }, ['Green Beaker'] = { pos = 1895, section = 35 }, ['Green Bed'] = { pos = 3176, section = 7 }, ['Green Bed BE'] = { pos = 1550, section = 7 }, ['Green Bed LCE'] = { pos = 1550, section = 7 }, ['Green Bend Banner'] = { pos = 2725, section = 2 }, ['Green Bend Sinister Banner'] = { pos = 2726, section = 2 }, ['Green Bordure Banner'] = { pos = 2727, section = 2 }, ['Green Bordure Indented Banner'] = { pos = 2728, section = 2 }, ['Green Candle'] = { pos = 407, section = 7 }, ['Green Carpet'] = { pos = 1626, section = 7 }, ['Green Carpet Revision 1'] = { pos = 735, section = 40 }, ['Green Chevron Banner'] = { pos = 2729, section = 2 }, ['Green Chief Banner'] = { pos = 2730, section = 2 }, ['Green Chief Dexter Canton Banner'] = { pos = 2731, section = 2 }, ['Green Chief Indented Banner'] = { pos = 2732, section = 2 }, ['Green Chief Sinister Canton Banner'] = { pos = 2733, section = 2 }, ['Green Cloth'] = { pos = 231, section = 40 }, ['Green Concrete'] = { pos = 1490, section = 7 }, ['Green Concrete Powder'] = { pos = 1491, section = 7 }, ['Green Creeper Charge Banner'] = { pos = 2734, section = 2 }, ['Green Cross Banner'] = { pos = 2735, section = 2 }, ['Green Dye'] = { pos = 3159, section = 6 }, ['Green Fess Banner'] = { pos = 2736, section = 2 }, ['Green Field Masoned Banner'] = { pos = 2737, section = 2 }, ['Green Firework Star'] = { pos = 811, section = 9 }, ['Green Flask'] = { pos = 1908, section = 36 }, ['Green Flower Charge Banner'] = { pos = 2738, section = 2 }, ['Green Glazed Terracotta'] = { pos = 1492, section = 7 }, ['Green Globe Banner'] = { pos = 41, section = 2 }, ['Green Glow Stick'] = { pos = 1981, section = 33 }, ['Green Gradient Banner'] = { pos = 2739, section = 2 }, ['Green Inverted Chevron Banner'] = { pos = 2740, section = 2 }, ['Green Jar'] = { pos = 1920, section = 37 }, ['Green Lozenge Banner'] = { pos = 2741, section = 2 }, ['Green Pale Banner'] = { pos = 2742, section = 2 }, ['Green Pale Dexter Banner'] = { pos = 2743, section = 2 }, ['Green Pale Sinister Banner'] = { pos = 2744, section = 2 }, ['Green Paly Banner'] = { pos = 2745, section = 2 }, ['Green Per Bend Banner'] = { pos = 2746, section = 2 }, ['Green Per Bend Inverted Banner'] = { pos = 2747, section = 2 }, ['Green Per Bend Sinister Banner'] = { pos = 2748, section = 2 }, ['Green Per Bend Sinister Inverted Banner'] = { pos = 2749, section = 2 }, ['Green Per Fess Banner'] = { pos = 2750, section = 2 }, ['Green Per Fess Inverted Banner'] = { pos = 2751, section = 2 }, ['Green Per Pale Banner'] = { pos = 2752, section = 2 }, ['Green Per Pale Inverted Banner'] = { pos = 2753, section = 2 }, ['Green Piglin Banner'] = { pos = 364, section = 2 }, ['Green Roundel Banner'] = { pos = 2754, section = 2 }, ['Green Saltire Banner'] = { pos = 2755, section = 2 }, ['Green Shield'] = { pos = 2510, section = 1 }, ['Green Shulker Box'] = { pos = 1608, section = 7 }, ['Green Shulker Box Revision 1'] = { pos = 1421, section = 40 }, ['Green Skull Charge Banner'] = { pos = 2756, section = 2 }, ['Green Snout Banner'] = { pos = 364, section = 2 }, ['Green Sparkler'] = { pos = 1754, section = 33 }, ['Green Sparkler (active)'] = { pos = 1755, section = 33 }, ['Green Stained Glass'] = { pos = 737, section = 7 }, ['Green Stained Glass Pane'] = { pos = 738, section = 7 }, ['Green Stained Glass Pane BE'] = { pos = 2013, section = 7 }, ['Green Terracotta'] = { pos = 736, section = 7 }, ['Green Thing Banner'] = { pos = 2757, section = 2 }, ['Green Tinted Glass'] = { pos = 1300, section = 40 }, ['Green Tinted Glass Pane'] = { pos = 8, section = 40 }, ['Green Torch'] = { pos = 1756, section = 33 }, ['Green Wood Planks'] = { pos = 249, section = 30 }, ['Green Wool'] = { pos = 1528, section = 7 }, ['Green Wool Revision 2'] = { pos = 739, section = 40 }, Grindstone = { pos = 2461, section = 26 }, ['Grindstone Revision 1'] = { pos = 2445, section = 26 }, ['Guardian Spawn Egg'] = { pos = 1151, section = 24 }, Gunpowder = { pos = 3516, section = 23 }, Hafnium = { pos = 1813, section = 34 }, ['Half Filled Bundle'] = { pos = 430, section = 25 }, Halogen = { pos = 69, section = 34 }, ['Hanging Roots'] = { pos = 469, section = 19 }, ['Hardened Black Stained Glass'] = { pos = 1950, section = 33 }, ['Hardened Black Stained Glass Pane'] = { pos = 1982, section = 33 }, ['Hardened Blue Stained Glass'] = { pos = 1951, section = 33 }, ['Hardened Blue Stained Glass Pane'] = { pos = 1983, section = 33 }, ['Hardened Brown Stained Glass'] = { pos = 1952, section = 33 }, ['Hardened Brown Stained Glass Pane'] = { pos = 1984, section = 33 }, ['Hardened Cyan Stained Glass'] = { pos = 1953, section = 33 }, ['Hardened Cyan Stained Glass Pane'] = { pos = 1985, section = 33 }, ['Hardened Glass'] = { pos = 1954, section = 33 }, ['Hardened Glass Pane'] = { pos = 1986, section = 33 }, ['Hardened Gray Stained Glass'] = { pos = 1955, section = 33 }, ['Hardened Gray Stained Glass Pane'] = { pos = 1987, section = 33 }, ['Hardened Green Stained Glass'] = { pos = 1956, section = 33 }, ['Hardened Green Stained Glass Pane'] = { pos = 1988, section = 33 }, ['Hardened Light Blue Stained Glass'] = { pos = 1957, section = 33 }, ['Hardened Light Blue Stained Glass Pane'] = { pos = 1989, section = 33 }, ['Hardened Light Gray Stained Glass'] = { pos = 1958, section = 33 }, ['Hardened Light Gray Stained Glass Pane'] = { pos = 1990, section = 33 }, ['Hardened Lime Stained Glass'] = { pos = 1959, section = 33 }, ['Hardened Lime Stained Glass Pane'] = { pos = 1991, section = 33 }, ['Hardened Magenta Stained Glass'] = { pos = 1960, section = 33 }, ['Hardened Magenta Stained Glass Pane'] = { pos = 1992, section = 33 }, ['Hardened Orange Stained Glass'] = { pos = 1961, section = 33 }, ['Hardened Orange Stained Glass Pane'] = { pos = 1993, section = 33 }, ['Hardened Pink Stained Glass'] = { pos = 1962, section = 33 }, ['Hardened Pink Stained Glass Pane'] = { pos = 1994, section = 33 }, ['Hardened Purple Stained Glass'] = { pos = 1963, section = 33 }, ['Hardened Purple Stained Glass Pane'] = { pos = 1995, section = 33 }, ['Hardened Red Stained Glass'] = { pos = 1964, section = 33 }, ['Hardened Red Stained Glass Pane'] = { pos = 1996, section = 33 }, ['Hardened White Stained Glass'] = { pos = 1965, section = 33 }, ['Hardened White Stained Glass Pane'] = { pos = 1997, section = 33 }, ['Hardened Yellow Stained Glass'] = { pos = 1966, section = 33 }, ['Hardened Yellow Stained Glass Pane'] = { pos = 1998, section = 33 }, Hassium = { pos = 1814, section = 34 }, ['Hay Bale'] = { pos = 3264, section = 12 }, Head = { pos = 966, section = 14 }, ['Head BE'] = { pos = 217, section = 14 }, ['Heart of the Sea'] = { pos = 1742, section = 23 }, ['Heart of the Sea Revision 1'] = { pos = 1975, section = 29 }, ['Heart Pottery Sherd'] = { pos = 1227, section = 44 }, ['Heartbreak Pottery Sherd'] = { pos = 1228, section = 44 }, ['Heavy Weighted Pressure Plate'] = { pos = 3335, section = 13 }, ['Heavy Weighted Pressure Plate Revision 1'] = { pos = 2075, section = 29 }, Helium = { pos = 1815, section = 34 }, ['Hoglin Spawn Egg'] = { pos = 194, section = 24 }, ['Hoglin Spawn Egg Revision 1'] = { pos = 1169, section = 29 }, Holmium = { pos = 1816, section = 34 }, ['Honey Block'] = { pos = 107, section = 12 }, ['Honey Block BE'] = { pos = 98, section = 12 }, ['Honey Block BE Revision 1'] = { pos = 101, section = 29 }, ['Honey Block Revision 1'] = { pos = 98, section = 12 }, ['Honey Bottle'] = { pos = 61, section = 10 }, ['Honey Bottle BE'] = { pos = 102, section = 10 }, Honeycomb = { pos = 62, section = 23 }, ['Honeycomb BE Revision 1'] = { pos = 103, section = 29 }, ['Honeycomb Block'] = { pos = 99, section = 12 }, Hopper = { pos = 3608, section = 26 }, ['Hopper Revision 2'] = { pos = 358, section = 29 }, Horn = { pos = 93, section = 38 }, ['Horn Coral'] = { pos = 1715, section = 15 }, ['Horn Coral Block'] = { pos = 1710, section = 15 }, ['Horn Coral Block BE'] = { pos = 1973, section = 15 }, ['Horn Coral Block Revision 1'] = { pos = 1705, section = 29 }, ['Horn Coral Fan'] = { pos = 2134, section = 15 }, ['Horn Coral Fan Revision 1'] = { pos = 1726, section = 29 }, ['Horn Coral Fan Revision 2'] = { pos = 2141, section = 29 }, ['Horned Sheep Spawn Egg'] = { pos = 625, section = 38 }, ['Horse Saddle'] = { pos = 2465, section = 30 }, ['Horse Spawn Egg'] = { pos = 1152, section = 24 }, ['Host Armor Trim'] = { pos = 1214, section = 41 }, ['Host Armor Trim Smithing Template'] = { pos = 1214, section = 41 }, ['Howl Pottery Sherd'] = { pos = 1229, section = 44 }, ['Husk Spawn Egg'] = { pos = 1373, section = 24 }, ['Husk Spawn Egg Revision 1'] = { pos = 1563, section = 39 }, Hydrargyrum = { pos = 1817, section = 34 }, Hydrogen = { pos = 1818, section = 34 }, ['Hydrogen Peroxide'] = { pos = 1889, section = 35 }, Ice = { pos = 3366, section = 15 }, ['Ice Bomb'] = { pos = 1757, section = 33 }, ['Impulse Command Block Revision 1'] = { pos = 1240, section = 29 }, ['Indigo Beaker'] = { pos = 1896, section = 35 }, ['Indigo Flask'] = { pos = 1909, section = 36 }, ['Indigo Jar'] = { pos = 1921, section = 37 }, Indium = { pos = 1819, section = 34 }, ['Infested Chiseled Stone Bricks'] = { pos = 3357, section = 15 }, ['Infested Cobblestone'] = { pos = 3359, section = 12 }, ['Infested Cracked Stone Bricks'] = { pos = 3361, section = 15 }, ['Infested Deepslate'] = { pos = 503, section = 15 }, ['Infested Mossy Stone Bricks'] = { pos = 3368, section = 15 }, ['Infested Stone'] = { pos = 1000, section = 15 }, ['Infested Stone Bricks'] = { pos = 3380, section = 15 }, ['Initialized Nether Reactor Core'] = { pos = 1600, section = 20 }, ['Initialized Nether Reactor Core Revision 1'] = { pos = 1597, section = 29 }, ['Ink Sac'] = { pos = 3160, section = 6 }, ['Int Tag'] = { pos = 1254, section = 32 }, ['Inverted Daylight Detector'] = { pos = 1249, section = 26 }, ['Inverted Daylight Sensor'] = { pos = 1249, section = 26 }, ['Invisible Bedrock'] = { pos = 2151, section = 26 }, Iodine = { pos = 1820, section = 34 }, Iridium = { pos = 1821, section = 34 }, Iron = { pos = 1806, section = 34 }, ['Iron Axe'] = { pos = 3574, section = 25 }, ['Iron Bars'] = { pos = 3265, section = 12 }, ['Iron Bars BE'] = { pos = 2026, section = 12 }, ['Iron Boots'] = { pos = 2511, section = 1 }, ['Iron Chestplate'] = { pos = 2512, section = 1 }, ['Iron Door'] = { pos = 569, section = 13 }, ['Iron Door Revision 2'] = { pos = 941, section = 13 }, ['Iron Golem Spawn Egg'] = { pos = 696, section = 24 }, ['Iron Heart'] = { pos = 120, section = 32 }, ['Iron Helmet'] = { pos = 2513, section = 1 }, ['Iron Hoe'] = { pos = 3575, section = 25 }, ['Iron Horse Armor'] = { pos = 39, section = 1 }, ['Iron Ingot'] = { pos = 3517, section = 23 }, ['Iron Leggings'] = { pos = 2514, section = 1 }, ['Iron Nugget'] = { pos = 3518, section = 23 }, ['Iron Ore'] = { pos = 3395, section = 18 }, ['Iron Pickaxe'] = { pos = 3576, section = 25 }, ['Iron Shovel'] = { pos = 3577, section = 25 }, ['Iron Sulfide'] = { pos = 1916, section = 37 }, ['Iron Sword'] = { pos = 3637, section = 28 }, ['Iron Trapdoor'] = { pos = 942, section = 13 }, ['Iron Trim Chainmail Boots'] = { pos = 1008, section = 43 }, ['Iron Trim Chainmail Chestplate'] = { pos = 1009, section = 43 }, ['Iron Trim Chainmail Helmet'] = { pos = 1012, section = 43 }, ['Iron Trim Chainmail Leggings'] = { pos = 1013, section = 43 }, ['Iron Trim Diamond Boots'] = { pos = 1014, section = 43 }, ['Iron Trim Diamond Chestplate'] = { pos = 1015, section = 43 }, ['Iron Trim Diamond Helmet'] = { pos = 1016, section = 43 }, ['Iron Trim Diamond Leggings'] = { pos = 1017, section = 43 }, ['Iron Trim Golden Boots'] = { pos = 1018, section = 43 }, ['Iron Trim Golden Chestplate'] = { pos = 1019, section = 43 }, ['Iron Trim Golden Helmet'] = { pos = 1020, section = 43 }, ['Iron Trim Golden Leggings'] = { pos = 1021, section = 43 }, ['Iron Trim Iron Boots'] = { pos = 1022, section = 43 }, ['Iron Trim Iron Chestplate'] = { pos = 1023, section = 43 }, ['Iron Trim Iron Helmet'] = { pos = 1024, section = 43 }, ['Iron Trim Iron Leggings'] = { pos = 1025, section = 43 }, ['Iron Trim Leather Boots'] = { pos = 1026, section = 43 }, ['Iron Trim Leather Cap'] = { pos = 1027, section = 43 }, ['Iron Trim Leather Pants'] = { pos = 1028, section = 43 }, ['Iron Trim Leather Tunic'] = { pos = 1029, section = 43 }, ['Iron Trim Netherite Boots'] = { pos = 1030, section = 43 }, ['Iron Trim Netherite Chestplate'] = { pos = 1031, section = 43 }, ['Iron Trim Netherite Helmet'] = { pos = 1032, section = 43 }, ['Iron Trim Netherite Leggings'] = { pos = 1033, section = 43 }, ['Iron Trim Turtle Shell'] = { pos = 1034, section = 43 }, ['Item Frame'] = { pos = 3152, section = 5 }, ["Jack o'Lantern"] = { pos = 3266, section = 12 }, ["Jack o'Lantern BE"] = { pos = 221, section = 12 }, Jar = { pos = 1922, section = 37 }, Jigsaw = { pos = 291, section = 26 }, ['Jigsaw BE'] = { pos = 291, section = 26 }, ['Jigsaw Block'] = { pos = 291, section = 26 }, ['Jigsaw Block BE'] = { pos = 291, section = 26 }, ['Jigsaw Block Revision 1'] = { pos = 2450, section = 29 }, ['Jigsaw Block Revision 2'] = { pos = 2458, section = 29 }, ['Jigsaw Revision 1'] = { pos = 2450, section = 29 }, ['Jigsaw Revision 2'] = { pos = 2458, section = 29 }, Jukebox = { pos = 3609, section = 26 }, ['Jumbo Rabbit Spawn Egg'] = { pos = 626, section = 38 }, ['Jungle Boat'] = { pos = 636, section = 27 }, ['Jungle Boat Revision 2'] = { pos = 3621, section = 29 }, ['Jungle Boat with Chest'] = { pos = 615, section = 27 }, ['Jungle Button'] = { pos = 3336, section = 13 }, ['Jungle Door'] = { pos = 570, section = 13 }, ['Jungle Door Revision 3'] = { pos = 551, section = 29 }, ['Jungle Explorer Map'] = { pos = 1326, section = 25 }, ['Jungle Explorer Map BE'] = { pos = 1327, section = 25 }, ['Jungle Fence'] = { pos = 644, section = 12 }, ['Jungle Fence BE'] = { pos = 3268, section = 12 }, ['Jungle Fence Gate'] = { pos = 3267, section = 13 }, ['Jungle Fence Gate BE'] = { pos = 55, section = 13 }, ['Jungle Hanging Sign'] = { pos = 656, section = 5 }, ['Jungle Leaves'] = { pos = 3421, section = 19 }, ['Jungle Leaves BE'] = { pos = 112, section = 19 }, ['Jungle Log'] = { pos = 3422, section = 19 }, ['Jungle Log Revision 1'] = { pos = 2240, section = 29 }, ['Jungle Planks'] = { pos = 896, section = 12 }, ['Jungle Pressure Plate'] = { pos = 3337, section = 13 }, ['Jungle Sapling'] = { pos = 3423, section = 19 }, ['Jungle Sign'] = { pos = 2395, section = 17 }, ['Jungle Slab'] = { pos = 3269, section = 12 }, ['Jungle Stairs'] = { pos = 3270, section = 12 }, ['Jungle Stairs Left'] = { pos = 2259, section = 42 }, ['Jungle Trapdoor'] = { pos = 1649, section = 13 }, ['Jungle Wood'] = { pos = 3271, section = 12 }, ['Jungle Wood Button'] = { pos = 3336, section = 13 }, ['Jungle Wood Door'] = { pos = 570, section = 13 }, ['Jungle Wood Fence'] = { pos = 644, section = 12 }, ['Jungle Wood Fence Gate'] = { pos = 3267, section = 13 }, ['Jungle Wood Planks'] = { pos = 896, section = 12 }, ['Jungle Wood Pressure Plate'] = { pos = 3337, section = 13 }, ['Jungle Wood Sign'] = { pos = 2395, section = 17 }, ['Jungle Wood Slab'] = { pos = 3269, section = 12 }, ['Jungle Wood Stairs'] = { pos = 3270, section = 12 }, ['Jungle Wood Trapdoor'] = { pos = 1649, section = 13 }, Kalium = { pos = 1822, section = 34 }, Kelp = { pos = 1683, section = 19 }, ['Kelp Revision 1'] = { pos = 1976, section = 29 }, ['Knowledge Book'] = { pos = 3610, section = 26 }, Krypton = { pos = 1823, section = 34 }, ['La Baguette'] = { pos = 1318, section = 32 }, ['Lab Table'] = { pos = 1936, section = 33 }, Ladder = { pos = 3272, section = 12 }, Lantern = { pos = 2451, section = 26 }, Lanthanide = { pos = 70, section = 34 }, Lanthanum = { pos = 1824, section = 34 }, ['Lapis Lazuli'] = { pos = 3161, section = 6 }, ['Lapis Lazuli Block'] = { pos = 3273, section = 12 }, ['Lapis Lazuli Block Revision 1'] = { pos = 2241, section = 29 }, ['Lapis Lazuli Ore'] = { pos = 3396, section = 18 }, ['Lapis Trim Chainmail Boots'] = { pos = 1035, section = 43 }, ['Lapis Trim Chainmail Chestplate'] = { pos = 1036, section = 43 }, ['Lapis Trim Chainmail Helmet'] = { pos = 1037, section = 43 }, ['Lapis Trim Chainmail Leggings'] = { pos = 1038, section = 43 }, ['Lapis Trim Diamond Boots'] = { pos = 1040, section = 43 }, ['Lapis Trim Diamond Chestplate'] = { pos = 1041, section = 43 }, ['Lapis Trim Diamond Helmet'] = { pos = 1042, section = 43 }, ['Lapis Trim Diamond Leggings'] = { pos = 1043, section = 43 }, ['Lapis Trim Golden Boots'] = { pos = 1044, section = 43 }, ['Lapis Trim Golden Chestplate'] = { pos = 1045, section = 43 }, ['Lapis Trim Golden Helmet'] = { pos = 1046, section = 43 }, ['Lapis Trim Golden Leggings'] = { pos = 1047, section = 43 }, ['Lapis Trim Iron Boots'] = { pos = 1048, section = 43 }, ['Lapis Trim Iron Chestplate'] = { pos = 1049, section = 43 }, ['Lapis Trim Iron Helmet'] = { pos = 1051, section = 43 }, ['Lapis Trim Iron Leggings'] = { pos = 1052, section = 43 }, ['Lapis Trim Leather Boots'] = { pos = 1053, section = 43 }, ['Lapis Trim Leather Cap'] = { pos = 1054, section = 43 }, ['Lapis Trim Leather Pants'] = { pos = 1055, section = 43 }, ['Lapis Trim Leather Tunic'] = { pos = 1056, section = 43 }, ['Lapis Trim Netherite Boots'] = { pos = 1057, section = 43 }, ['Lapis Trim Netherite Chestplate'] = { pos = 1058, section = 43 }, ['Lapis Trim Netherite Helmet'] = { pos = 1059, section = 43 }, ['Lapis Trim Netherite Leggings'] = { pos = 1060, section = 43 }, ['Lapis Trim Turtle Shell'] = { pos = 1062, section = 43 }, ['Large Amethyst Bud'] = { pos = 408, section = 15 }, ['Large Fern'] = { pos = 3424, section = 19 }, Latex = { pos = 1897, section = 35 }, Lava = { pos = 2129, section = 11 }, ['Lava BE Revision 2'] = { pos = 2130, section = 29 }, ['Lava Block'] = { pos = 2119, section = 29 }, ['Lava Bucket'] = { pos = 3147, section = 4 }, Lawrencium = { pos = 1825, section = 34 }, ['Le Tricolore'] = { pos = 1319, section = 32 }, Lead = { pos = 3578, section = 25 }, ['Lead (element)'] = { pos = 1826, section = 34 }, Leather = { pos = 3519, section = 23 }, ['Leather Boots'] = { pos = 2515, section = 1 }, ['Leather Boots Revision 1'] = { pos = 2076, section = 29 }, ['Leather Boots Revision 2'] = { pos = 2077, section = 29 }, ['Leather Cap'] = { pos = 2516, section = 1 }, ['Leather Cap Revision 1'] = { pos = 2078, section = 29 }, ['Leather Cap Revision 2'] = { pos = 2079, section = 29 }, ['Leather Horse Armor'] = { pos = 1382, section = 1 }, ['Leather Horse Armor BE'] = { pos = 378, section = 1 }, ['Leather Pants'] = { pos = 2517, section = 1 }, ['Leather Pants Revision 1'] = { pos = 2080, section = 29 }, ['Leather Pants Revision 2'] = { pos = 2081, section = 29 }, ['Leather Tunic'] = { pos = 2518, section = 1 }, ['Leather Tunic Revision 1'] = { pos = 2082, section = 29 }, ['Leather Tunic Revision 2'] = { pos = 2083, section = 29 }, Lectern = { pos = 19, section = 13 }, ['Lectern Revision 1'] = { pos = 2434, section = 29 }, ['Left Curly'] = { pos = 1255, section = 32 }, ['Left Square'] = { pos = 1256, section = 32 }, Lever = { pos = 3338, section = 13 }, ['Light 0'] = { pos = 525, section = 26 }, ['Light 1'] = { pos = 526, section = 26 }, ['Light 10'] = { pos = 527, section = 26 }, ['Light 11'] = { pos = 528, section = 26 }, ['Light 12'] = { pos = 529, section = 26 }, ['Light 13'] = { pos = 530, section = 26 }, ['Light 14'] = { pos = 531, section = 26 }, ['Light 15'] = { pos = 532, section = 26 }, ['Light 2'] = { pos = 533, section = 26 }, ['Light 3'] = { pos = 534, section = 26 }, ['Light 4'] = { pos = 535, section = 26 }, ['Light 5'] = { pos = 536, section = 26 }, ['Light 6'] = { pos = 537, section = 26 }, ['Light 7'] = { pos = 538, section = 26 }, ['Light 8'] = { pos = 539, section = 26 }, ['Light 9'] = { pos = 540, section = 26 }, ['Light Block 0'] = { pos = 76, section = 26 }, ['Light Block 1'] = { pos = 77, section = 26 }, ['Light Block 10'] = { pos = 78, section = 26 }, ['Light Block 11'] = { pos = 79, section = 26 }, ['Light Block 12'] = { pos = 80, section = 26 }, ['Light Block 13'] = { pos = 81, section = 26 }, ['Light Block 14'] = { pos = 82, section = 26 }, ['Light Block 15'] = { pos = 83, section = 26 }, ['Light Block 2'] = { pos = 84, section = 26 }, ['Light Block 3'] = { pos = 85, section = 26 }, ['Light Block 4'] = { pos = 86, section = 26 }, ['Light Block 5'] = { pos = 87, section = 26 }, ['Light Block 6'] = { pos = 88, section = 26 }, ['Light Block 7'] = { pos = 89, section = 26 }, ['Light Block 8'] = { pos = 90, section = 26 }, ['Light Block 9'] = { pos = 91, section = 26 }, ['Light Blue Balloon'] = { pos = 1937, section = 33 }, ['Light Blue Banner'] = { pos = 740, section = 7 }, ['Light Blue Banner 15w14a'] = { pos = 478, section = 32 }, ['Light Blue Base Banner'] = { pos = 2758, section = 2 }, ['Light Blue Base Dexter Canton Banner'] = { pos = 2759, section = 2 }, ['Light Blue Base Gradient Banner'] = { pos = 2760, section = 2 }, ['Light Blue Base Indented Banner'] = { pos = 2761, section = 2 }, ['Light Blue Base Sinister Canton Banner'] = { pos = 2762, section = 2 }, ['Light Blue Bed'] = { pos = 3177, section = 7 }, ['Light Blue Bed BE'] = { pos = 1551, section = 7 }, ['Light Blue Bed LCE'] = { pos = 1551, section = 7 }, ['Light Blue Bend Banner'] = { pos = 2763, section = 2 }, ['Light Blue Bend Sinister Banner'] = { pos = 2764, section = 2 }, ['Light Blue Bordure Banner'] = { pos = 2765, section = 2 }, ['Light Blue Bordure Indented Banner'] = { pos = 2766, section = 2 }, ['Light Blue Candle'] = { pos = 409, section = 7 }, ['Light Blue Carpet'] = { pos = 1627, section = 7 }, ['Light Blue Carpet Revision 1'] = { pos = 741, section = 40 }, ['Light Blue Chevron Banner'] = { pos = 2767, section = 2 }, ['Light Blue Chief Banner'] = { pos = 2768, section = 2 }, ['Light Blue Chief Dexter Canton Banner'] = { pos = 2769, section = 2 }, ['Light Blue Chief Indented Banner'] = { pos = 2770, section = 2 }, ['Light Blue Chief Sinister Canton Banner'] = { pos = 2771, section = 2 }, ['Light Blue Concrete'] = { pos = 1493, section = 7 }, ['Light Blue Concrete Powder'] = { pos = 1494, section = 7 }, ['Light Blue Creeper Charge Banner'] = { pos = 2772, section = 2 }, ['Light Blue Cross Banner'] = { pos = 2773, section = 2 }, ['Light Blue Dye'] = { pos = 3162, section = 6 }, ['Light Blue Fess Banner'] = { pos = 2774, section = 2 }, ['Light Blue Field Masoned Banner'] = { pos = 2775, section = 2 }, ['Light Blue Firework Star'] = { pos = 812, section = 9 }, ['Light Blue Flower Charge Banner'] = { pos = 2776, section = 2 }, ['Light Blue Glazed Terracotta'] = { pos = 1495, section = 7 }, ['Light Blue Globe Banner'] = { pos = 42, section = 2 }, ['Light Blue Glow Stick'] = { pos = 1999, section = 33 }, ['Light Blue Gradient Banner'] = { pos = 2777, section = 2 }, ['Light Blue Inverted Chevron Banner'] = { pos = 2778, section = 2 }, ['Light Blue Lozenge Banner'] = { pos = 2779, section = 2 }, ['Light Blue Pale Banner'] = { pos = 2780, section = 2 }, ['Light Blue Pale Dexter Banner'] = { pos = 2781, section = 2 }, ['Light Blue Pale Sinister Banner'] = { pos = 2782, section = 2 }, ['Light Blue Paly Banner'] = { pos = 2783, section = 2 }, ['Light Blue Per Bend Banner'] = { pos = 2784, section = 2 }, ['Light Blue Per Bend Inverted Banner'] = { pos = 2785, section = 2 }, ['Light Blue Per Bend Sinister Banner'] = { pos = 2786, section = 2 }, ['Light Blue Per Bend Sinister Inverted Banner'] = { pos = 2787, section = 2 }, ['Light Blue Per Fess Banner'] = { pos = 2788, section = 2 }, ['Light Blue Per Fess Inverted Banner'] = { pos = 2789, section = 2 }, ['Light Blue Per Pale Banner'] = { pos = 2790, section = 2 }, ['Light Blue Per Pale Inverted Banner'] = { pos = 2791, section = 2 }, ['Light Blue Piglin Banner'] = { pos = 365, section = 2 }, ['Light Blue Roundel Banner'] = { pos = 2792, section = 2 }, ['Light Blue Saltire Banner'] = { pos = 2793, section = 2 }, ['Light Blue Shield'] = { pos = 2519, section = 1 }, ['Light Blue Shulker Box'] = { pos = 1609, section = 7 }, ['Light Blue Shulker Box Revision 1'] = { pos = 1422, section = 40 }, ['Light Blue Skull Charge Banner'] = { pos = 2794, section = 2 }, ['Light Blue Snout Banner'] = { pos = 365, section = 2 }, ['Light Blue Stained Glass'] = { pos = 743, section = 7 }, ['Light Blue Stained Glass Pane'] = { pos = 744, section = 7 }, ['Light Blue Stained Glass Pane BE'] = { pos = 2014, section = 7 }, ['Light Blue Terracotta'] = { pos = 742, section = 7 }, ['Light Blue Thing Banner'] = { pos = 2795, section = 2 }, ['Light Blue Tinted Glass'] = { pos = 1302, section = 40 }, ['Light Blue Tinted Glass Pane'] = { pos = 9, section = 40 }, ['Light Blue Wood Planks'] = { pos = 250, section = 30 }, ['Light Blue Wool'] = { pos = 1529, section = 7 }, ['Light Blue Wool Revision 2'] = { pos = 745, section = 40 }, ['Light Gray Balloon'] = { pos = 1945, section = 33 }, ['Light Gray Banner'] = { pos = 746, section = 7 }, ['Light Gray Banner 15w14a'] = { pos = 479, section = 32 }, ['Light Gray Base Banner'] = { pos = 2796, section = 2 }, ['Light Gray Base Dexter Canton Banner'] = { pos = 2797, section = 2 }, ['Light Gray Base Gradient Banner'] = { pos = 2798, section = 2 }, ['Light Gray Base Indented Banner'] = { pos = 2799, section = 2 }, ['Light Gray Base Sinister Canton Banner'] = { pos = 2800, section = 2 }, ['Light Gray Beaker'] = { pos = 1898, section = 35 }, ['Light Gray Bed'] = { pos = 3178, section = 7 }, ['Light Gray Bed BE'] = { pos = 1552, section = 7 }, ['Light Gray Bed LCE'] = { pos = 1552, section = 7 }, ['Light Gray Bend Banner'] = { pos = 2801, section = 2 }, ['Light Gray Bend Sinister Banner'] = { pos = 2802, section = 2 }, ['Light Gray Bordure Banner'] = { pos = 2803, section = 2 }, ['Light Gray Bordure Indented Banner'] = { pos = 2804, section = 2 }, ['Light Gray Candle'] = { pos = 410, section = 7 }, ['Light Gray Carpet'] = { pos = 1628, section = 7 }, ['Light Gray Carpet Revision 1'] = { pos = 747, section = 40 }, ['Light Gray Chevron Banner'] = { pos = 2805, section = 2 }, ['Light Gray Chief Banner'] = { pos = 2806, section = 2 }, ['Light Gray Chief Dexter Canton Banner'] = { pos = 2807, section = 2 }, ['Light Gray Chief Indented Banner'] = { pos = 2808, section = 2 }, ['Light Gray Chief Sinister Canton Banner'] = { pos = 2809, section = 2 }, ['Light Gray Cloth'] = { pos = 233, section = 40 }, ['Light Gray Concrete'] = { pos = 1496, section = 7 }, ['Light Gray Concrete Powder'] = { pos = 1497, section = 7 }, ['Light Gray Creeper Charge Banner'] = { pos = 2810, section = 2 }, ['Light Gray Cross Banner'] = { pos = 2811, section = 2 }, ['Light Gray Dye'] = { pos = 3163, section = 6 }, ['Light Gray Fess Banner'] = { pos = 2812, section = 2 }, ['Light Gray Field Masoned Banner'] = { pos = 2813, section = 2 }, ['Light Gray Firework Star'] = { pos = 813, section = 9 }, ['Light Gray Flask'] = { pos = 1910, section = 36 }, ['Light Gray Flower Charge Banner'] = { pos = 2814, section = 2 }, ['Light Gray Glazed Terracotta'] = { pos = 1498, section = 7 }, ['Light Gray Globe Banner'] = { pos = 43, section = 2 }, ['Light Gray Gradient Banner'] = { pos = 2815, section = 2 }, ['Light Gray Inverted Chevron Banner'] = { pos = 2816, section = 2 }, ['Light Gray Jar'] = { pos = 1923, section = 37 }, ['Light Gray Lozenge Banner'] = { pos = 2817, section = 2 }, ['Light Gray Pale Banner'] = { pos = 2818, section = 2 }, ['Light Gray Pale Dexter Banner'] = { pos = 2819, section = 2 }, ['Light Gray Pale Sinister Banner'] = { pos = 2820, section = 2 }, ['Light Gray Paly Banner'] = { pos = 2821, section = 2 }, ['Light Gray Per Bend Banner'] = { pos = 2822, section = 2 }, ['Light Gray Per Bend Inverted Banner'] = { pos = 2823, section = 2 }, ['Light Gray Per Bend Sinister Banner'] = { pos = 2824, section = 2 }, ['Light Gray Per Bend Sinister Inverted Banner'] = { pos = 2825, section = 2 }, ['Light Gray Per Fess Banner'] = { pos = 2826, section = 2 }, ['Light Gray Per Fess Inverted Banner'] = { pos = 2827, section = 2 }, ['Light Gray Per Pale Banner'] = { pos = 2828, section = 2 }, ['Light Gray Per Pale Inverted Banner'] = { pos = 2829, section = 2 }, ['Light Gray Piglin Banner'] = { pos = 366, section = 2 }, ['Light Gray Roundel Banner'] = { pos = 2830, section = 2 }, ['Light Gray Saltire Banner'] = { pos = 2831, section = 2 }, ['Light Gray Shield'] = { pos = 2520, section = 1 }, ['Light Gray Shulker Box'] = { pos = 1610, section = 7 }, ['Light Gray Shulker Box Revision 1'] = { pos = 1423, section = 40 }, ['Light Gray Skull Charge Banner'] = { pos = 2832, section = 2 }, ['Light Gray Snout Banner'] = { pos = 366, section = 2 }, ['Light Gray Stained Glass'] = { pos = 749, section = 7 }, ['Light Gray Stained Glass Pane'] = { pos = 750, section = 7 }, ['Light Gray Stained Glass Pane BE'] = { pos = 2015, section = 7 }, ['Light Gray Terracotta'] = { pos = 748, section = 7 }, ['Light Gray Thing Banner'] = { pos = 2833, section = 2 }, ['Light Gray Tinted Glass'] = { pos = 1303, section = 40 }, ['Light Gray Tinted Glass Pane'] = { pos = 10, section = 40 }, ['Light Gray Wood Planks'] = { pos = 251, section = 30 }, ['Light Gray Wool'] = { pos = 1530, section = 7 }, ['Light Gray Wool Revision 2'] = { pos = 751, section = 40 }, ['Light Negative'] = { pos = 541, section = 26 }, ['Light Weighted Pressure Plate'] = { pos = 3339, section = 13 }, ['Light Weighted Pressure Plate Revision 1'] = { pos = 2084, section = 29 }, ['Lightning Rod'] = { pos = 415, section = 26 }, Lilac = { pos = 3425, section = 19 }, ['Lily of the Valley'] = { pos = 2390, section = 19 }, ['Lily Pad'] = { pos = 3426, section = 19 }, ['Lime Balloon'] = { pos = 1938, section = 33 }, ['Lime Banner'] = { pos = 752, section = 7 }, ['Lime Banner 15w14a'] = { pos = 480, section = 32 }, ['Lime Base Banner'] = { pos = 2834, section = 2 }, ['Lime Base Dexter Canton Banner'] = { pos = 2835, section = 2 }, ['Lime Base Gradient Banner'] = { pos = 2836, section = 2 }, ['Lime Base Indented Banner'] = { pos = 2837, section = 2 }, ['Lime Base Sinister Canton Banner'] = { pos = 2838, section = 2 }, ['Lime Bed'] = { pos = 3179, section = 7 }, ['Lime Bed BE'] = { pos = 1553, section = 7 }, ['Lime Bed LCE'] = { pos = 1553, section = 7 }, ['Lime Bend Banner'] = { pos = 2839, section = 2 }, ['Lime Bend Sinister Banner'] = { pos = 2840, section = 2 }, ['Lime Bordure Banner'] = { pos = 2841, section = 2 }, ['Lime Bordure Indented Banner'] = { pos = 2842, section = 2 }, ['Lime Candle'] = { pos = 416, section = 7 }, ['Lime Carpet'] = { pos = 1629, section = 7 }, ['Lime Carpet Revision 1'] = { pos = 753, section = 40 }, ['Lime Chevron Banner'] = { pos = 2843, section = 2 }, ['Lime Chief Banner'] = { pos = 2844, section = 2 }, ['Lime Chief Dexter Canton Banner'] = { pos = 2845, section = 2 }, ['Lime Chief Indented Banner'] = { pos = 2846, section = 2 }, ['Lime Chief Sinister Canton Banner'] = { pos = 2847, section = 2 }, ['Lime Concrete'] = { pos = 1499, section = 7 }, ['Lime Concrete Powder'] = { pos = 1500, section = 7 }, ['Lime Creeper Charge Banner'] = { pos = 2848, section = 2 }, ['Lime Cross Banner'] = { pos = 2849, section = 2 }, ['Lime Dye'] = { pos = 3164, section = 6 }, ['Lime Fess Banner'] = { pos = 2850, section = 2 }, ['Lime Field Masoned Banner'] = { pos = 2851, section = 2 }, ['Lime Firework Star'] = { pos = 814, section = 9 }, ['Lime Flower Charge Banner'] = { pos = 2852, section = 2 }, ['Lime Glazed Terracotta'] = { pos = 1501, section = 7 }, ['Lime Globe Banner'] = { pos = 44, section = 2 }, ['Lime Glow Stick'] = { pos = 2000, section = 33 }, ['Lime Gradient Banner'] = { pos = 2853, section = 2 }, ['Lime Inverted Chevron Banner'] = { pos = 2854, section = 2 }, ['Lime Lozenge Banner'] = { pos = 2855, section = 2 }, ['Lime Pale Banner'] = { pos = 2856, section = 2 }, ['Lime Pale Dexter Banner'] = { pos = 2857, section = 2 }, ['Lime Pale Sinister Banner'] = { pos = 2858, section = 2 }, ['Lime Paly Banner'] = { pos = 2859, section = 2 }, ['Lime Per Bend Banner'] = { pos = 2860, section = 2 }, ['Lime Per Bend Inverted Banner'] = { pos = 2861, section = 2 }, ['Lime Per Bend Sinister Banner'] = { pos = 2862, section = 2 }, ['Lime Per Bend Sinister Inverted Banner'] = { pos = 2863, section = 2 }, ['Lime Per Fess Banner'] = { pos = 2864, section = 2 }, ['Lime Per Fess Inverted Banner'] = { pos = 2865, section = 2 }, ['Lime Per Pale Banner'] = { pos = 2866, section = 2 }, ['Lime Per Pale Inverted Banner'] = { pos = 2867, section = 2 }, ['Lime Piglin Banner'] = { pos = 367, section = 2 }, ['Lime Roundel Banner'] = { pos = 2868, section = 2 }, ['Lime Saltire Banner'] = { pos = 2869, section = 2 }, ['Lime Shield'] = { pos = 2521, section = 1 }, ['Lime Shulker Box'] = { pos = 1611, section = 7 }, ['Lime Shulker Box Revision 1'] = { pos = 1424, section = 40 }, ['Lime Skull Charge Banner'] = { pos = 2870, section = 2 }, ['Lime Snout Banner'] = { pos = 367, section = 2 }, ['Lime Stained Glass'] = { pos = 755, section = 7 }, ['Lime Stained Glass Pane'] = { pos = 756, section = 7 }, ['Lime Stained Glass Pane BE'] = { pos = 2016, section = 7 }, ['Lime Terracotta'] = { pos = 754, section = 7 }, ['Lime Thing Banner'] = { pos = 2871, section = 2 }, ['Lime Tinted Glass'] = { pos = 1304, section = 40 }, ['Lime Tinted Glass Pane'] = { pos = 11, section = 40 }, ['Lime Wood Planks'] = { pos = 252, section = 30 }, ['Lime Wool'] = { pos = 1531, section = 7 }, ['Lime Wool Revision 2'] = { pos = 757, section = 40 }, ['Lingering Awkward Potion Revision 1'] = { pos = 312, section = 46 }, ['Lingering Mundane Potion Revision 1'] = { pos = 313, section = 46 }, ['Lingering Potion of Big'] = { pos = 1258, section = 32 }, ['Lingering Potion of Decay'] = { pos = 1406, section = 31 }, ['Lingering Potion of Fire Resistance'] = { pos = 3484, section = 31 }, ['Lingering Potion of Fire Resistance Revision 1'] = { pos = 314, section = 46 }, ['Lingering Potion of Harming'] = { pos = 3485, section = 31 }, ['Lingering Potion of Harming Revision 1'] = { pos = 315, section = 46 }, ['Lingering Potion of Healing'] = { pos = 3486, section = 31 }, ['Lingering Potion of Healing Revision 1'] = { pos = 316, section = 46 }, ['Lingering Potion of Invisibility'] = { pos = 3487, section = 31 }, ['Lingering Potion of Invisibility Revision 1'] = { pos = 317, section = 46 }, ['Lingering Potion of Leaping'] = { pos = 3488, section = 31 }, ['Lingering Potion of Leaping Revision 1'] = { pos = 318, section = 46 }, ['Lingering Potion of Levitation'] = { pos = 116, section = 31 }, ['Lingering Potion of Luck'] = { pos = 3489, section = 31 }, ['Lingering Potion of Luck Revision 1'] = { pos = 319, section = 46 }, ['Lingering Potion of Night Vision'] = { pos = 3490, section = 31 }, ['Lingering Potion of Night Vision Revision 1'] = { pos = 320, section = 46 }, ['Lingering Potion of Poison'] = { pos = 3491, section = 31 }, ['Lingering Potion of Poison Revision 1'] = { pos = 321, section = 46 }, ['Lingering Potion of Regeneration'] = { pos = 3492, section = 31 }, ['Lingering Potion of Regeneration Revision 1'] = { pos = 322, section = 46 }, ['Lingering Potion of Slow Falling'] = { pos = 3493, section = 31 }, ['Lingering Potion of Slow Falling Revision 1'] = { pos = 323, section = 46 }, ['Lingering Potion of Slowness'] = { pos = 3494, section = 31 }, ['Lingering Potion of Slowness Revision 1'] = { pos = 324, section = 46 }, ['Lingering Potion of Small'] = { pos = 1260, section = 32 }, ['Lingering Potion of Strength'] = { pos = 3495, section = 31 }, ['Lingering Potion of Strength Revision 1'] = { pos = 325, section = 46 }, ['Lingering Potion of Swiftness'] = { pos = 3496, section = 31 }, ['Lingering Potion of Swiftness Revision 1'] = { pos = 326, section = 46 }, ['Lingering Potion of the Turtle Master'] = { pos = 3497, section = 31 }, ['Lingering Potion of the Turtle Master Revision 1'] = { pos = 327, section = 46 }, ['Lingering Potion of Water Breathing'] = { pos = 3498, section = 31 }, ['Lingering Potion of Water Breathing Revision 1'] = { pos = 328, section = 46 }, ['Lingering Potion of Weakness'] = { pos = 3499, section = 31 }, ['Lingering Thick Potion Revision 1'] = { pos = 329, section = 46 }, ['Lingering Uncraftable Potion Revision 1'] = { pos = 330, section = 46 }, ['Lingering Water Bottle'] = { pos = 3501, section = 31 }, ['Lingering Water Bottle Revision 1'] = { pos = 331, section = 46 }, ['List Tag'] = { pos = 1261, section = 32 }, ['Lit Deepslate Redstone Ore BE'] = { pos = 565, section = 18 }, ['Lit Redstone Lamp Post-Flip'] = { pos = 380, section = 29 }, ['Lit Redstone Ore'] = { pos = 2171, section = 29 }, ['Lit Redstone Ore BE'] = { pos = 564, section = 18 }, Lithium = { pos = 1827, section = 34 }, ['Lithium Hydride'] = { pos = 1915, section = 37 }, Livermorium = { pos = 1828, section = 34 }, ['Llama Spawn Egg'] = { pos = 1412, section = 24 }, ['Locked chest'] = { pos = 1251, section = 29 }, ['Locked Chest 12w19a'] = { pos = 1317, section = 30 }, ['Locked Chest 12w22a'] = { pos = 1305, section = 30 }, ['Locked Chest 13w01a'] = { pos = 553, section = 30 }, ['Locked Chest 13w03a'] = { pos = 554, section = 30 }, ['Locked Chest 13w18a'] = { pos = 1306, section = 30 }, ['Locked Map'] = { pos = 131, section = 25 }, Lodestone = { pos = 222, section = 12 }, ['Lodestone Compass'] = { pos = 577, section = 25 }, ['Lodestone-Compass'] = { pos = 577, section = 25 }, ['Long Tag'] = { pos = 1262, section = 32 }, ['Longer String'] = { pos = 1322, section = 32 }, Loom = { pos = 2446, section = 26 }, ['Loom Revision 1'] = { pos = 20, section = 26 }, Luminol = { pos = 1922, section = 37 }, Lutetium = { pos = 1829, section = 34 }, Lye = { pos = 1915, section = 37 }, ['Magenta Balloon'] = { pos = 1939, section = 33 }, ['Magenta Banner'] = { pos = 758, section = 7 }, ['Magenta Banner 15w14a'] = { pos = 481, section = 32 }, ['Magenta Base Banner'] = { pos = 2872, section = 2 }, ['Magenta Base Dexter Canton Banner'] = { pos = 2873, section = 2 }, ['Magenta Base Gradient Banner'] = { pos = 2874, section = 2 }, ['Magenta Base Indented Banner'] = { pos = 2875, section = 2 }, ['Magenta Base Sinister Canton Banner'] = { pos = 2876, section = 2 }, ['Magenta Bed'] = { pos = 3180, section = 7 }, ['Magenta Bed BE'] = { pos = 1554, section = 7 }, ['Magenta Bed LCE'] = { pos = 1554, section = 7 }, ['Magenta Bend Banner'] = { pos = 2877, section = 2 }, ['Magenta Bend Sinister Banner'] = { pos = 2878, section = 2 }, ['Magenta Bordure Banner'] = { pos = 2879, section = 2 }, ['Magenta Bordure Indented Banner'] = { pos = 2880, section = 2 }, ['Magenta Candle'] = { pos = 417, section = 7 }, ['Magenta Carpet'] = { pos = 1630, section = 7 }, ['Magenta Carpet Revision 1'] = { pos = 759, section = 40 }, ['Magenta Chevron Banner'] = { pos = 2881, section = 2 }, ['Magenta Chief Banner'] = { pos = 2882, section = 2 }, ['Magenta Chief Dexter Canton Banner'] = { pos = 2883, section = 2 }, ['Magenta Chief Indented Banner'] = { pos = 2884, section = 2 }, ['Magenta Chief Sinister Canton Banner'] = { pos = 2885, section = 2 }, ['Magenta Cloth'] = { pos = 235, section = 40 }, ['Magenta Concrete'] = { pos = 1502, section = 7 }, ['Magenta Concrete Powder'] = { pos = 1503, section = 7 }, ['Magenta Creeper Charge Banner'] = { pos = 2886, section = 2 }, ['Magenta Cross Banner'] = { pos = 2887, section = 2 }, ['Magenta Dye'] = { pos = 3165, section = 6 }, ['Magenta Fess Banner'] = { pos = 2888, section = 2 }, ['Magenta Field Masoned Banner'] = { pos = 2889, section = 2 }, ['Magenta Firework Star'] = { pos = 815, section = 9 }, ['Magenta Flower Charge Banner'] = { pos = 2890, section = 2 }, ['Magenta Glazed Terracotta'] = { pos = 1541, section = 7 }, ['Magenta Glazed Terracotta Revision 1'] = { pos = 1504, section = 40 }, ['Magenta Globe Banner'] = { pos = 45, section = 2 }, ['Magenta Glow Stick'] = { pos = 2001, section = 33 }, ['Magenta Gradient Banner'] = { pos = 2891, section = 2 }, ['Magenta Inverted Chevron Banner'] = { pos = 2892, section = 2 }, ['Magenta Lozenge Banner'] = { pos = 2893, section = 2 }, ['Magenta Pale Banner'] = { pos = 2894, section = 2 }, ['Magenta Pale Dexter Banner'] = { pos = 2895, section = 2 }, ['Magenta Pale Sinister Banner'] = { pos = 2896, section = 2 }, ['Magenta Paly Banner'] = { pos = 2897, section = 2 }, ['Magenta Per Bend Banner'] = { pos = 2898, section = 2 }, ['Magenta Per Bend Inverted Banner'] = { pos = 2899, section = 2 }, ['Magenta Per Bend Sinister Banner'] = { pos = 2900, section = 2 }, ['Magenta Per Bend Sinister Inverted Banner'] = { pos = 2901, section = 2 }, ['Magenta Per Fess Banner'] = { pos = 2902, section = 2 }, ['Magenta Per Fess Inverted Banner'] = { pos = 2903, section = 2 }, ['Magenta Per Pale Banner'] = { pos = 2904, section = 2 }, ['Magenta Per Pale Inverted Banner'] = { pos = 2905, section = 2 }, ['Magenta Piglin Banner'] = { pos = 368, section = 2 }, ['Magenta Roundel Banner'] = { pos = 2906, section = 2 }, ['Magenta Saltire Banner'] = { pos = 2907, section = 2 }, ['Magenta Shield'] = { pos = 2522, section = 1 }, ['Magenta Shulker Box'] = { pos = 1612, section = 7 }, ['Magenta Shulker Box Revision 1'] = { pos = 1425, section = 40 }, ['Magenta Skull Charge Banner'] = { pos = 2908, section = 2 }, ['Magenta Snout Banner'] = { pos = 368, section = 2 }, ['Magenta Stained Glass'] = { pos = 761, section = 7 }, ['Magenta Stained Glass Pane'] = { pos = 762, section = 7 }, ['Magenta Stained Glass Pane BE'] = { pos = 2017, section = 7 }, ['Magenta Terracotta'] = { pos = 760, section = 7 }, ['Magenta Thing Banner'] = { pos = 2909, section = 2 }, ['Magenta Tinted Glass'] = { pos = 1307, section = 40 }, ['Magenta Tinted Glass Pane'] = { pos = 12, section = 40 }, ['Magenta Wood Planks'] = { pos = 253, section = 30 }, ['Magenta Wool'] = { pos = 1532, section = 7 }, ['Magenta Wool Revision 2'] = { pos = 763, section = 40 }, ['Magma Block BE'] = { pos = 510, section = 16 }, ['Magma Cream'] = { pos = 3143, section = 3 }, ['Magma Cube Spawn Egg'] = { pos = 1153, section = 24 }, ['Magma Cube Spawn Egg Revision 1'] = { pos = 1389, section = 39 }, Magnesium = { pos = 1830, section = 34 }, ['Magnesium Nitrate'] = { pos = 1924, section = 37 }, ['Magnesium Oxide'] = { pos = 1915, section = 37 }, Manganese = { pos = 1831, section = 34 }, ['Mangrove Boat'] = { pos = 639, section = 27 }, ['Mangrove Boat with Chest'] = { pos = 618, section = 27 }, ['Mangrove Button'] = { pos = 599, section = 13 }, ['Mangrove Door'] = { pos = 600, section = 13 }, ['Mangrove Fence'] = { pos = 647, section = 12 }, ['Mangrove Fence BE'] = { pos = 585, section = 12 }, ['Mangrove Fence Gate'] = { pos = 586, section = 12 }, ['Mangrove Hanging Sign'] = { pos = 657, section = 5 }, ['Mangrove Leaves'] = { pos = 605, section = 19 }, ['Mangrove Log'] = { pos = 606, section = 19 }, ['Mangrove Planks'] = { pos = 587, section = 12 }, ['Mangrove Pressure Plate'] = { pos = 601, section = 13 }, ['Mangrove Propagule'] = { pos = 607, section = 19 }, ['Mangrove Roots'] = { pos = 608, section = 19 }, ['Mangrove Sign'] = { pos = 604, section = 17 }, ['Mangrove Slab'] = { pos = 588, section = 12 }, ['Mangrove Stairs'] = { pos = 589, section = 12 }, ['Mangrove Trapdoor'] = { pos = 602, section = 13 }, ['Mangrove Wood'] = { pos = 590, section = 12 }, ['Mangrove Wood Button'] = { pos = 599, section = 13 }, ['Mangrove Wood Door'] = { pos = 600, section = 13 }, ['Mangrove Wood Fence'] = { pos = 647, section = 12 }, ['Mangrove Wood Fence BE'] = { pos = 585, section = 12 }, ['Mangrove Wood Fence Gate'] = { pos = 586, section = 12 }, ['Mangrove Wood Planks'] = { pos = 587, section = 12 }, ['Mangrove Wood Pressure Plate'] = { pos = 601, section = 13 }, ['Mangrove Wood Sign'] = { pos = 604, section = 17 }, ['Mangrove Wood Slab'] = { pos = 588, section = 12 }, ['Mangrove Wood Stairs'] = { pos = 589, section = 12 }, ['Mangrove Wood Trapdoor'] = { pos = 602, section = 13 }, Map = { pos = 3579, section = 25 }, ['Map BE'] = { pos = 124, section = 25 }, ['Material Reducer'] = { pos = 1940, section = 33 }, ['Medium Amethyst Bud'] = { pos = 418, section = 15 }, Meitnerium = { pos = 1832, section = 34 }, Melon = { pos = 3427, section = 19 }, ['Melon Seeds'] = { pos = 1050, section = 19 }, ['Melon Slice'] = { pos = 3207, section = 10 }, Mendelevium = { pos = 1833, section = 34 }, ['Mercuric Chloride'] = { pos = 1915, section = 37 }, Mercury = { pos = 1817, section = 34 }, Metalloid = { pos = 71, section = 34 }, ['MHF Alex'] = { pos = 1438, section = 14 }, ['MHF ArrowDown'] = { pos = 1439, section = 14 }, ['MHF ArrowLeft'] = { pos = 1440, section = 14 }, ['MHF ArrowRight'] = { pos = 1441, section = 14 }, ['MHF ArrowUp'] = { pos = 1442, section = 14 }, ['MHF Blaze'] = { pos = 1443, section = 14 }, ['MHF Cactus'] = { pos = 1444, section = 14 }, ['MHF Cake'] = { pos = 1445, section = 14 }, ['MHF CaveSpider'] = { pos = 1446, section = 14 }, ['MHF Chest'] = { pos = 1447, section = 14 }, ['MHF Chicken'] = { pos = 1448, section = 14 }, ['MHF CoconutB'] = { pos = 1449, section = 14 }, ['MHF CoconutG'] = { pos = 1450, section = 14 }, ['MHF Cow'] = { pos = 1451, section = 14 }, ['MHF Creeper'] = { pos = 964, section = 14 }, ['MHF Enderman'] = { pos = 1452, section = 14 }, ['MHF Exclamation'] = { pos = 1453, section = 14 }, ['MHF Ghast'] = { pos = 1454, section = 14 }, ['MHF Golem'] = { pos = 1455, section = 14 }, ['MHF Herobrine'] = { pos = 1456, section = 14 }, ['MHF LavaSlime'] = { pos = 1457, section = 14 }, ['MHF Melon'] = { pos = 1458, section = 14 }, ['MHF MushroomCow'] = { pos = 1459, section = 14 }, ['MHF OakLog'] = { pos = 1460, section = 14 }, ['MHF Ocelot'] = { pos = 1461, section = 14 }, ['MHF Pig'] = { pos = 1462, section = 14 }, ['MHF PigZombie'] = { pos = 1463, section = 14 }, ['MHF Present1'] = { pos = 1464, section = 14 }, ['MHF Present2'] = { pos = 1465, section = 14 }, ['MHF Pumpkin'] = { pos = 1466, section = 14 }, ['MHF Question'] = { pos = 1467, section = 14 }, ['MHF Sheep'] = { pos = 1468, section = 14 }, ['MHF Skeleton'] = { pos = 3643, section = 14 }, ['MHF Slime'] = { pos = 1469, section = 14 }, ['MHF Spider'] = { pos = 1470, section = 14 }, ['MHF Squid'] = { pos = 1471, section = 14 }, ['MHF Steve'] = { pos = 966, section = 14 }, ['MHF TNT'] = { pos = 1472, section = 14 }, ['MHF TNT2'] = { pos = 1473, section = 14 }, ['MHF Villager'] = { pos = 1474, section = 14 }, ['MHF WSkeleton'] = { pos = 3644, section = 14 }, ['MHF Zombie'] = { pos = 3645, section = 14 }, Milk = { pos = 3148, section = 4 }, ['Milk Bucket'] = { pos = 3148, section = 4 }, ['Milk Bucket Revision 1'] = { pos = 226, section = 29 }, Minecart = { pos = 3622, section = 27 }, ['Minecart with Chest'] = { pos = 3623, section = 27 }, ['Minecart with Command Block'] = { pos = 3624, section = 27 }, ['Minecart with Command Block BE'] = { pos = 1539, section = 27 }, ['Minecart with Furnace'] = { pos = 3625, section = 27 }, ['Minecart with Hopper'] = { pos = 3626, section = 27 }, ['Minecart with TNT'] = { pos = 3627, section = 27 }, ['Miner Pottery Sherd'] = { pos = 1230, section = 44 }, ['Missing Model JE1'] = { pos = 1306, section = 30 }, ['Missing Texture'] = { pos = 1306, section = 30, deprecated = true }, ['Missing Texture 1.5'] = { pos = 554, section = 30, deprecated = true }, ['Missing Texture BE'] = { pos = 356, section = 30, deprecated = true }, Molybdenum = { pos = 1834, section = 34 }, ['Monster Spawner'] = { pos = 3379, section = 15 }, ['Monster Spawner BE'] = { pos = 508, section = 15 }, ['Monster Spawner JE'] = { pos = 3379, section = 15 }, ['Moobloom Spawn Egg'] = { pos = 627, section = 38 }, ['Moon Cow Spawn Egg'] = { pos = 1325, section = 32 }, ['Mooshroom Spawn Egg'] = { pos = 1154, section = 24 }, ['Mooshroom Spawn Egg Revision 1'] = { pos = 1390, section = 39 }, Moscovium = { pos = 1835, section = 34 }, ['Moss Block'] = { pos = 461, section = 15 }, ['Moss Carpet'] = { pos = 462, section = 15 }, ['Moss Stone'] = { pos = 986, section = 15 }, ['Mossy Cobblestone'] = { pos = 3367, section = 15 }, ['Mossy Cobblestone Slab'] = { pos = 3274, section = 12 }, ['Mossy Cobblestone Stairs'] = { pos = 3275, section = 12 }, ['Mossy Cobblestone Wall'] = { pos = 3276, section = 12 }, ['Mossy Cobblestone Wall BE'] = { pos = 2027, section = 12 }, ['Mossy Stone Brick Slab'] = { pos = 3277, section = 12 }, ['Mossy Stone Brick Stairs'] = { pos = 3278, section = 12 }, ['Mossy Stone Brick Wall'] = { pos = 3279, section = 12 }, ['Mossy Stone Brick Wall BE'] = { pos = 26, section = 12 }, ['Mossy Stone Bricks'] = { pos = 3368, section = 15 }, ['Mossy Stone Bricks Monster Egg'] = { pos = 3368, section = 15 }, ['Mourner Pottery Sherd'] = { pos = 1231, section = 44 }, Mud = { pos = 603, section = 15 }, ['Mud Brick Slab'] = { pos = 591, section = 12 }, ['Mud Brick Stairs'] = { pos = 592, section = 12 }, ['Mud Brick Wall'] = { pos = 593, section = 12 }, ['Mud Brick Wall BE'] = { pos = 629, section = 12 }, ['Mud Bricks'] = { pos = 594, section = 12 }, ['Mud Bucket'] = { pos = 92, section = 38 }, ['Muddy Mangrove Roots'] = { pos = 609, section = 19 }, ['Mule Spawn Egg'] = { pos = 1374, section = 24 }, ['Mule Spawn Egg Revision 1'] = { pos = 1152, section = 24 }, ['Mundane Lingering Potion'] = { pos = 1097, section = 31 }, ['Mundane Potion'] = { pos = 1083, section = 21 }, ['Mundane Potion Revision 1'] = { pos = 293, section = 45 }, ['Mundane Splash Potion'] = { pos = 1100, section = 22 }, ['Mushroom Stem'] = { pos = 3428, section = 19 }, ['Mushroom Stew'] = { pos = 3208, section = 10 }, ['Music Disc 11'] = { pos = 3153, section = 5 }, ['Music Disc 13'] = { pos = 673, section = 5 }, ['Music Disc 5'] = { pos = 630, section = 5 }, ['Music Disc Blocks'] = { pos = 675, section = 5 }, ['Music Disc Cat'] = { pos = 676, section = 5 }, ['Music Disc Chirp'] = { pos = 677, section = 5 }, ['Music Disc Far'] = { pos = 678, section = 5 }, ['Music Disc Mall'] = { pos = 681, section = 5 }, ['Music Disc Mellohi'] = { pos = 682, section = 5 }, ['Music Disc Otherside'] = { pos = 555, section = 5 }, ['Music Disc Pigstep'] = { pos = 289, section = 5 }, ['Music Disc Relic'] = { pos = 1324, section = 5 }, ['Music Disc Stal'] = { pos = 684, section = 5 }, ['Music Disc Strad'] = { pos = 685, section = 5 }, ['Music Disc Wait'] = { pos = 686, section = 5 }, ['Music Disc Ward'] = { pos = 687, section = 5 }, Mycelium = { pos = 3369, section = 15 }, ['Mycelium Revision 1'] = { pos = 106, section = 29 }, Name = { pos = 1263, section = 32 }, ['Name Tag'] = { pos = 3580, section = 25 }, Natrium = { pos = 1836, section = 34 }, ['Nautilus Shell'] = { pos = 1743, section = 23 }, Neodymium = { pos = 1837, section = 34 }, Neon = { pos = 1838, section = 34 }, Neptunium = { pos = 1839, section = 34 }, ['Nether Brick'] = { pos = 3520, section = 23 }, ['Nether Brick Block'] = { pos = 1003, section = 16 }, ['Nether Brick Fence'] = { pos = 640, section = 16 }, ['Nether Brick Fence BE'] = { pos = 3383, section = 16 }, ['Nether Brick Slab'] = { pos = 3280, section = 12 }, ['Nether Brick Stairs'] = { pos = 3384, section = 16 }, ['Nether Brick Stairs Left'] = { pos = 2260, section = 42 }, ['Nether Brick Wall'] = { pos = 3281, section = 12 }, ['Nether Brick Wall BE'] = { pos = 27, section = 12 }, ['Nether Bricks'] = { pos = 3385, section = 16 }, ['Nether Gold Ore'] = { pos = 202, section = 16 }, ['Nether Gold Ore Revision 1'] = { pos = 225, section = 29 }, ['Nether Portal'] = { pos = 2162, section = 29 }, ['Nether Quartz'] = { pos = 3521, section = 23 }, ['Nether Quartz Ore'] = { pos = 3386, section = 16 }, ['Nether Reactor Core'] = { pos = 1599, section = 20 }, ['Nether Reactor Core Revision 1'] = { pos = 1081, section = 29 }, ['Nether Sprouts'] = { pos = 94, section = 16 }, ['Nether Sprouts old'] = { pos = 191, section = 16 }, ['Nether Sprouts Revision 1'] = { pos = 267, section = 29 }, ['Nether Star'] = { pos = 355, section = 23 }, ['Nether Wart'] = { pos = 663, section = 3 }, ['Nether Wart (block)'] = { pos = 1007, section = 16 }, ['Nether Wart Block'] = { pos = 3282, section = 16 }, ['Netherite Axe'] = { pos = 137, section = 25 }, ['Netherite Boots'] = { pos = 142, section = 1 }, ['Netherite Chestplate'] = { pos = 143, section = 1 }, ['Netherite Helmet'] = { pos = 144, section = 1 }, ['Netherite Hoe'] = { pos = 138, section = 25 }, ['Netherite Ingot'] = { pos = 135, section = 23 }, ['Netherite Leggings'] = { pos = 145, section = 1 }, ['Netherite Pickaxe'] = { pos = 139, section = 25 }, ['Netherite Scrap'] = { pos = 136, section = 23 }, ['Netherite Shovel'] = { pos = 140, section = 25 }, ['Netherite Sword'] = { pos = 141, section = 28 }, ['Netherite Trim Chainmail Boots'] = { pos = 1063, section = 43 }, ['Netherite Trim Chainmail Chestplate'] = { pos = 1064, section = 43 }, ['Netherite Trim Chainmail Helmet'] = { pos = 1066, section = 43 }, ['Netherite Trim Chainmail Leggings'] = { pos = 1069, section = 43 }, ['Netherite Trim Diamond Boots'] = { pos = 1070, section = 43 }, ['Netherite Trim Diamond Chestplate'] = { pos = 1071, section = 43 }, ['Netherite Trim Diamond Helmet'] = { pos = 1072, section = 43 }, ['Netherite Trim Diamond Leggings'] = { pos = 1073, section = 43 }, ['Netherite Trim Golden Boots'] = { pos = 1074, section = 43 }, ['Netherite Trim Golden Chestplate'] = { pos = 1075, section = 43 }, ['Netherite Trim Golden Helmet'] = { pos = 1076, section = 43 }, ['Netherite Trim Golden Leggings'] = { pos = 1077, section = 43 }, ['Netherite Trim Iron Boots'] = { pos = 1078, section = 43 }, ['Netherite Trim Iron Chestplate'] = { pos = 1084, section = 43 }, ['Netherite Trim Iron Helmet'] = { pos = 1085, section = 43 }, ['Netherite Trim Iron Leggings'] = { pos = 1086, section = 43 }, ['Netherite Trim Leather Boots'] = { pos = 1087, section = 43 }, ['Netherite Trim Leather Cap'] = { pos = 1088, section = 43 }, ['Netherite Trim Leather Pants'] = { pos = 1089, section = 43 }, ['Netherite Trim Leather Tunic'] = { pos = 1090, section = 43 }, ['Netherite Trim Netherite Boots'] = { pos = 1091, section = 43 }, ['Netherite Trim Netherite Chestplate'] = { pos = 1092, section = 43 }, ['Netherite Trim Netherite Helmet'] = { pos = 1093, section = 43 }, ['Netherite Trim Netherite Leggings'] = { pos = 1094, section = 43 }, ['Netherite Trim Turtle Shell'] = { pos = 1095, section = 43 }, ['Netherite Upgrade'] = { pos = 801, section = 41 }, ['Netherite Upgrade Smithing Template'] = { pos = 801, section = 41 }, Netherrack = { pos = 3387, section = 16 }, Nickel = { pos = 1840, section = 34 }, Nihonium = { pos = 1841, section = 34 }, Niobium = { pos = 1842, section = 34 }, Nitrogen = { pos = 1843, section = 34 }, Nobelium = { pos = 1844, section = 34 }, ['Noble gas'] = { pos = 72, section = 34 }, ['Note Block'] = { pos = 3611, section = 26 }, ['Oak Boat'] = { pos = 633, section = 27 }, ['Oak Boat Revision 2'] = { pos = 3628, section = 29 }, ['Oak Boat with Chest'] = { pos = 616, section = 27 }, ['Oak Button'] = { pos = 3340, section = 13 }, ['Oak Door'] = { pos = 571, section = 13 }, ['Oak Door Revision 3'] = { pos = 945, section = 13 }, ['Oak Fence'] = { pos = 641, section = 12 }, ['Oak Fence BE'] = { pos = 3284, section = 12 }, ['Oak Fence Gate'] = { pos = 3283, section = 13 }, ['Oak Fence Gate BE'] = { pos = 56, section = 13 }, ['Oak Fence Gate Revision 1'] = { pos = 1620, section = 13 }, ['Oak Hanging Sign'] = { pos = 658, section = 5 }, ['Oak Leaves'] = { pos = 3429, section = 19 }, ['Oak Log'] = { pos = 3430, section = 19 }, ['Oak Planks'] = { pos = 903, section = 12 }, ['Oak Pressure Plate'] = { pos = 3341, section = 13 }, ['Oak Pressure Plate Revision 1'] = { pos = 2086, section = 29 }, ['Oak Sapling'] = { pos = 3431, section = 19 }, ['Oak Sign'] = { pos = 3389, section = 17 }, ['Oak Sign Revision 1'] = { pos = 354, section = 29 }, ['Oak Slab'] = { pos = 3285, section = 12 }, ['Oak Stairs'] = { pos = 3286, section = 12 }, ['Oak Stairs Left'] = { pos = 2261, section = 42 }, ['Oak Trapdoor'] = { pos = 958, section = 13 }, ['Oak Wood'] = { pos = 3287, section = 12 }, ['Oak Wood Button'] = { pos = 3340, section = 13 }, ['Oak Wood Door'] = { pos = 571, section = 13 }, ['Oak Wood Fence'] = { pos = 641, section = 12 }, ['Oak Wood Fence Gate'] = { pos = 3283, section = 13 }, ['Oak Wood Planks'] = { pos = 903, section = 12 }, ['Oak Wood Pressure Plate'] = { pos = 3341, section = 13 }, ['Oak Wood Sign'] = { pos = 3389, section = 17 }, ['Oak Wood Slab'] = { pos = 904, section = 12 }, ['Oak Wood Stairs'] = { pos = 3286, section = 12 }, ['Oak Wood Trapdoor'] = { pos = 958, section = 13 }, Observer = { pos = 3612, section = 26 }, ['Observer BE'] = { pos = 1619, section = 13 }, ['Observer PE old'] = { pos = 1383, section = 29 }, ['Observer pre-1.11-pre1'] = { pos = 1383, section = 29 }, Obsidian = { pos = 3370, section = 15 }, ['Obsidian Boat'] = { pos = 1308, section = 32 }, ['Ocean Explorer Map'] = { pos = 3581, section = 25 }, ['Ocean Explorer Map BE'] = { pos = 125, section = 25 }, ['Ocelot Spawn Egg'] = { pos = 1155, section = 24 }, ['Ochre Froglight'] = { pos = 595, section = 12 }, ['Ochre Froglight BE'] = { pos = 578, section = 12 }, Oganesson = { pos = 1845, section = 34 }, ['Ominous Banner'] = { pos = 2468, section = 2 }, ['Ominous Shield'] = { pos = 377, section = 1 }, ['Orange Balloon'] = { pos = 1941, section = 33 }, ['Orange Banner'] = { pos = 764, section = 7 }, ['Orange Banner 15w14a'] = { pos = 482, section = 32 }, ['Orange Base Banner'] = { pos = 2910, section = 2 }, ['Orange Base Dexter Canton Banner'] = { pos = 2911, section = 2 }, ['Orange Base Gradient Banner'] = { pos = 2912, section = 2 }, ['Orange Base Indented Banner'] = { pos = 2913, section = 2 }, ['Orange Base Sinister Canton Banner'] = { pos = 2914, section = 2 }, ['Orange Beaker'] = { pos = 1899, section = 35 }, ['Orange Bed'] = { pos = 3181, section = 7 }, ['Orange Bed BE'] = { pos = 1555, section = 7 }, ['Orange Bed LCE'] = { pos = 1555, section = 7 }, ['Orange Bend Banner'] = { pos = 2915, section = 2 }, ['Orange Bend Sinister Banner'] = { pos = 2916, section = 2 }, ['Orange Bordure Banner'] = { pos = 2917, section = 2 }, ['Orange Bordure Indented Banner'] = { pos = 2918, section = 2 }, ['Orange Candle'] = { pos = 419, section = 7 }, ['Orange Carpet'] = { pos = 1631, section = 7 }, ['Orange Carpet Revision 1'] = { pos = 765, section = 40 }, ['Orange Chevron Banner'] = { pos = 2919, section = 2 }, ['Orange Chief Banner'] = { pos = 2920, section = 2 }, ['Orange Chief Dexter Canton Banner'] = { pos = 2921, section = 2 }, ['Orange Chief Indented Banner'] = { pos = 2922, section = 2 }, ['Orange Chief Sinister Canton Banner'] = { pos = 2923, section = 2 }, ['Orange Cloth'] = { pos = 236, section = 40 }, ['Orange Concrete'] = { pos = 1505, section = 7 }, ['Orange Concrete Powder'] = { pos = 1506, section = 7 }, ['Orange Creeper Charge Banner'] = { pos = 2924, section = 2 }, ['Orange Cross Banner'] = { pos = 2925, section = 2 }, ['Orange Dye'] = { pos = 3166, section = 6 }, ['Orange Fess Banner'] = { pos = 2926, section = 2 }, ['Orange Field Masoned Banner'] = { pos = 2927, section = 2 }, ['Orange Firework Star'] = { pos = 816, section = 9 }, ['Orange Flask'] = { pos = 1911, section = 36 }, ['Orange Flower Charge Banner'] = { pos = 2928, section = 2 }, ['Orange Glazed Terracotta'] = { pos = 1542, section = 7 }, ['Orange Glazed Terracotta Revision 1'] = { pos = 1507, section = 40 }, ['Orange Globe Banner'] = { pos = 46, section = 2 }, ['Orange Glow Stick'] = { pos = 2002, section = 33 }, ['Orange Gradient Banner'] = { pos = 2929, section = 2 }, ['Orange Inverted Chevron Banner'] = { pos = 2930, section = 2 }, ['Orange Jar'] = { pos = 1925, section = 37 }, ['Orange Lozenge Banner'] = { pos = 2931, section = 2 }, ['Orange Pale Banner'] = { pos = 2932, section = 2 }, ['Orange Pale Dexter Banner'] = { pos = 2933, section = 2 }, ['Orange Pale Sinister Banner'] = { pos = 2934, section = 2 }, ['Orange Paly Banner'] = { pos = 2935, section = 2 }, ['Orange Per Bend Banner'] = { pos = 2936, section = 2 }, ['Orange Per Bend Inverted Banner'] = { pos = 2937, section = 2 }, ['Orange Per Bend Sinister Banner'] = { pos = 2938, section = 2 }, ['Orange Per Bend Sinister Inverted Banner'] = { pos = 2939, section = 2 }, ['Orange Per Fess Banner'] = { pos = 2940, section = 2 }, ['Orange Per Fess Inverted Banner'] = { pos = 2941, section = 2 }, ['Orange Per Pale Banner'] = { pos = 2942, section = 2 }, ['Orange Per Pale Inverted Banner'] = { pos = 2943, section = 2 }, ['Orange Piglin Banner'] = { pos = 369, section = 2 }, ['Orange Roundel Banner'] = { pos = 2944, section = 2 }, ['Orange Saltire Banner'] = { pos = 2945, section = 2 }, ['Orange Shield'] = { pos = 2523, section = 1 }, ['Orange Shulker Box'] = { pos = 1613, section = 7 }, ['Orange Shulker Box Revision 1'] = { pos = 1426, section = 40 }, ['Orange Skull Charge Banner'] = { pos = 2946, section = 2 }, ['Orange Snout Banner'] = { pos = 369, section = 2 }, ['Orange Sparkler'] = { pos = 1758, section = 33 }, ['Orange Sparkler (active)'] = { pos = 1759, section = 33 }, ['Orange Stained Glass'] = { pos = 767, section = 7 }, ['Orange Stained Glass Pane'] = { pos = 768, section = 7 }, ['Orange Stained Glass Pane BE'] = { pos = 2018, section = 7 }, ['Orange Terracotta'] = { pos = 766, section = 7 }, ['Orange Thing Banner'] = { pos = 2947, section = 2 }, ['Orange Tinted Glass'] = { pos = 1309, section = 40 }, ['Orange Tinted Glass Pane'] = { pos = 13, section = 40 }, ['Orange Tulip'] = { pos = 3432, section = 19 }, ['Orange Wood Planks'] = { pos = 254, section = 30 }, ['Orange Wool'] = { pos = 1533, section = 7 }, ['Orange Wool Revision 2'] = { pos = 769, section = 40 }, Osmium = { pos = 1846, section = 34 }, ['Other non-metal'] = { pos = 73, section = 34 }, ['Oxeye Daisy'] = { pos = 3433, section = 19 }, ['Oxidized Copper'] = { pos = 441, section = 12 }, ['Oxidized Copper Block'] = { pos = 441, section = 12 }, ['Oxidized Cut Copper'] = { pos = 442, section = 12 }, ['Oxidized Cut Copper Block'] = { pos = 442, section = 12 }, ['Oxidized Cut Copper Slab'] = { pos = 443, section = 12 }, ['Oxidized Cut Copper Stairs'] = { pos = 444, section = 12 }, Oxygen = { pos = 1847, section = 34 }, ['Packed Air'] = { pos = 2363, section = 15 }, ['Packed Ice'] = { pos = 3371, section = 15 }, ['Packed Mud'] = { pos = 596, section = 12 }, Painting = { pos = 3154, section = 5 }, Palladium = { pos = 1848, section = 34 }, ['Panda Spawn Egg'] = { pos = 2412, section = 24 }, Paper = { pos = 3523, section = 23 }, ['Parrot Spawn Egg'] = { pos = 1544, section = 24 }, ['Pearlescent Froglight'] = { pos = 612, section = 12 }, ['Pearlescent Froglight BE'] = { pos = 579, section = 12 }, Peony = { pos = 3434, section = 19 }, ['Peony 3DS'] = { pos = 1572, section = 29 }, ['Peony BE Revision 2'] = { pos = 1572, section = 29 }, ['Peony LCE Revision 2'] = { pos = 1572, section = 29 }, ['Petrified Oak Slab'] = { pos = 904, section = 12 }, ['Phantom Membrane'] = { pos = 1730, section = 3 }, ['Phantom Membrane Revision 1'] = { pos = 105, section = 29 }, ['Phantom Spawn Egg'] = { pos = 1974, section = 24 }, ['Phantom Spawn Egg Revision 1'] = { pos = 1728, section = 39 }, Phosphorus = { pos = 1849, section = 34 }, Photo = { pos = 620, section = 20 }, ['Pickaxe Block'] = { pos = 1264, section = 32 }, ['Pig Spawn Egg'] = { pos = 1156, section = 24 }, ['Pig Spawn Egg Revision 1'] = { pos = 1391, section = 39 }, ['Piglin Brute Spawn Egg'] = { pos = 262, section = 24 }, ['Piglin Head'] = { pos = 701, section = 14 }, ['Piglin Spawn Egg'] = { pos = 193, section = 24 }, ['Piglin Spawn Egg BE'] = { pos = 205, section = 24 }, ['Pillager Spawn Egg'] = { pos = 2413, section = 24 }, ['Pink Balloon'] = { pos = 1942, section = 33 }, ['Pink Banner'] = { pos = 770, section = 7 }, ['Pink Banner 15w14a'] = { pos = 483, section = 32 }, ['Pink Base Banner'] = { pos = 2948, section = 2 }, ['Pink Base Dexter Canton Banner'] = { pos = 2949, section = 2 }, ['Pink Base Gradient Banner'] = { pos = 2950, section = 2 }, ['Pink Base Indented Banner'] = { pos = 2951, section = 2 }, ['Pink Base Sinister Canton Banner'] = { pos = 2952, section = 2 }, ['Pink Bed'] = { pos = 3182, section = 7 }, ['Pink Bed BE'] = { pos = 1556, section = 7 }, ['Pink Bed LCE'] = { pos = 1556, section = 7 }, ['Pink Bend Banner'] = { pos = 2953, section = 2 }, ['Pink Bend Sinister Banner'] = { pos = 2954, section = 2 }, ['Pink Bordure Banner'] = { pos = 2955, section = 2 }, ['Pink Bordure Indented Banner'] = { pos = 2956, section = 2 }, ['Pink Candle'] = { pos = 420, section = 7 }, ['Pink Carpet'] = { pos = 1632, section = 7 }, ['Pink Carpet Revision 1'] = { pos = 771, section = 40 }, ['Pink Chevron Banner'] = { pos = 2957, section = 2 }, ['Pink Chief Banner'] = { pos = 2958, section = 2 }, ['Pink Chief Dexter Canton Banner'] = { pos = 2959, section = 2 }, ['Pink Chief Indented Banner'] = { pos = 2960, section = 2 }, ['Pink Chief Sinister Canton Banner'] = { pos = 2961, section = 2 }, ['Pink Concrete'] = { pos = 1508, section = 7 }, ['Pink Concrete Powder'] = { pos = 1509, section = 7 }, ['Pink Creeper Charge Banner'] = { pos = 2962, section = 2 }, ['Pink Cross Banner'] = { pos = 2963, section = 2 }, ['Pink Daisy'] = { pos = 552, section = 38 }, ['Pink Dye'] = { pos = 3167, section = 6 }, ['Pink Fess Banner'] = { pos = 2964, section = 2 }, ['Pink Field Masoned Banner'] = { pos = 2965, section = 2 }, ['Pink Firework Star'] = { pos = 817, section = 9 }, ['Pink Flower Charge Banner'] = { pos = 2966, section = 2 }, ['Pink Glazed Terracotta'] = { pos = 1510, section = 7 }, ['Pink Globe Banner'] = { pos = 47, section = 2 }, ['Pink Glow Stick'] = { pos = 2003, section = 33 }, ['Pink Gradient Banner'] = { pos = 2967, section = 2 }, ['Pink Inverted Chevron Banner'] = { pos = 2968, section = 2 }, ['Pink Lozenge Banner'] = { pos = 2969, section = 2 }, ['Pink Pale Banner'] = { pos = 2970, section = 2 }, ['Pink Pale Dexter Banner'] = { pos = 2971, section = 2 }, ['Pink Pale Sinister Banner'] = { pos = 2972, section = 2 }, ['Pink Paly Banner'] = { pos = 2973, section = 2 }, ['Pink Per Bend Banner'] = { pos = 2974, section = 2 }, ['Pink Per Bend Inverted Banner'] = { pos = 2975, section = 2 }, ['Pink Per Bend Sinister Banner'] = { pos = 2976, section = 2 }, ['Pink Per Bend Sinister Inverted Banner'] = { pos = 2977, section = 2 }, ['Pink Per Fess Banner'] = { pos = 2978, section = 2 }, ['Pink Per Fess Inverted Banner'] = { pos = 2979, section = 2 }, ['Pink Per Pale Banner'] = { pos = 2980, section = 2 }, ['Pink Per Pale Inverted Banner'] = { pos = 2981, section = 2 }, ['Pink Petals'] = { pos = 1198, section = 19 }, ['Pink Piglin Banner'] = { pos = 370, section = 2 }, ['Pink Roundel Banner'] = { pos = 2982, section = 2 }, ['Pink Saltire Banner'] = { pos = 2983, section = 2 }, ['Pink Shield'] = { pos = 2524, section = 1 }, ['Pink Shulker Box'] = { pos = 1614, section = 7 }, ['Pink Shulker Box Revision 1'] = { pos = 1427, section = 40 }, ['Pink Skull Charge Banner'] = { pos = 2984, section = 2 }, ['Pink Snout Banner'] = { pos = 370, section = 2 }, ['Pink Stained Glass'] = { pos = 773, section = 7 }, ['Pink Stained Glass Pane'] = { pos = 774, section = 7 }, ['Pink Stained Glass Pane BE'] = { pos = 2019, section = 7 }, ['Pink Terracotta'] = { pos = 772, section = 7 }, ['Pink Thing Banner'] = { pos = 2985, section = 2 }, ['Pink Tinted Glass'] = { pos = 1310, section = 40 }, ['Pink Tinted Glass Pane'] = { pos = 14, section = 40 }, ['Pink Tulip'] = { pos = 3435, section = 19 }, ['Pink Wood Planks'] = { pos = 255, section = 30 }, ['Pink Wool'] = { pos = 1534, section = 7 }, ['Pink Wool Revision 2'] = { pos = 775, section = 40 }, Piston = { pos = 3342, section = 13 }, ['Piston Head Model'] = { pos = 1316, section = 30 }, ['Pitcher Plant'] = { pos = 1212, section = 19 }, ['Pitcher Pod'] = { pos = 1213, section = 19 }, ['Place Block'] = { pos = 1265, section = 32 }, ['Placeholder Texture'] = { pos = 1317, section = 30 }, ['Plains Village Map'] = { pos = 1326, section = 25 }, ['Plains Village Map BE'] = { pos = 1327, section = 25 }, Platinum = { pos = 1850, section = 34 }, ['Player Head'] = { pos = 966, section = 14 }, ['Plenty Pottery Sherd'] = { pos = 1232, section = 44 }, Plumbum = { pos = 1826, section = 34 }, Plutonium = { pos = 1851, section = 34 }, Podzol = { pos = 3372, section = 15 }, ['Pointed Dripstone'] = { pos = 436, section = 15 }, ['Pointed Dripstone BE'] = { pos = 459, section = 15 }, ['Poisonous Potato'] = { pos = 3209, section = 10 }, ['Polar Bear Spawn Egg'] = { pos = 1375, section = 24 }, ['Polished Andesite'] = { pos = 907, section = 12 }, ['Polished Andesite Slab'] = { pos = 3288, section = 12 }, ['Polished Andesite Stairs'] = { pos = 3289, section = 12 }, ['Polished Basalt'] = { pos = 206, section = 12 }, ['Polished Blackstone'] = { pos = 274, section = 16 }, ['Polished Blackstone Brick Slab'] = { pos = 279, section = 12 }, ['Polished Blackstone Brick Stairs'] = { pos = 280, section = 12 }, ['Polished Blackstone Brick Wall'] = { pos = 281, section = 12 }, ['Polished Blackstone Brick Wall BE'] = { pos = 387, section = 12 }, ['Polished Blackstone Bricks'] = { pos = 275, section = 16 }, ['Polished Blackstone Button'] = { pos = 285, section = 13 }, ['Polished Blackstone Pressure Plate'] = { pos = 286, section = 13 }, ['Polished Blackstone Slab'] = { pos = 282, section = 12 }, ['Polished Blackstone Stairs'] = { pos = 283, section = 12 }, ['Polished Blackstone Wall'] = { pos = 284, section = 12 }, ['Polished Blackstone Wall BE'] = { pos = 388, section = 12 }, ['Polished Deepslate'] = { pos = 501, section = 12 }, ['Polished Deepslate Slab'] = { pos = 504, section = 12 }, ['Polished Deepslate Stairs'] = { pos = 505, section = 12 }, ['Polished Deepslate Wall'] = { pos = 502, section = 12 }, ['Polished Deepslate Wall BE'] = { pos = 562, section = 12 }, ['Polished Diorite'] = { pos = 908, section = 12 }, ['Polished Diorite Slab'] = { pos = 3290, section = 12 }, ['Polished Diorite Stairs'] = { pos = 3291, section = 12 }, ['Polished Granite'] = { pos = 909, section = 12 }, ['Polished Granite Slab'] = { pos = 2430, section = 12 }, ['Polished Granite Stairs'] = { pos = 2431, section = 12 }, Polonium = { pos = 1852, section = 34 }, Polyethylene = { pos = 1922, section = 37 }, ['Popped Chorus Fruit'] = { pos = 3524, section = 23 }, Poppy = { pos = 3436, section = 19 }, Portal = { pos = 1011, section = 17 }, Portfolio = { pos = 1594, section = 20 }, ['Post transition metal'] = { pos = 74, section = 34 }, Poster = { pos = 1595, section = 20 }, Potassium = { pos = 1822, section = 34 }, ['Potassium Chloride'] = { pos = 1915, section = 37 }, ['Potassium Iodide'] = { pos = 1890, section = 35 }, Potato = { pos = 3210, section = 10 }, ['Potato Revision 1'] = { pos = 128, section = 29 }, ['Potato Revision 2'] = { pos = 129, section = 29 }, ['Potion of Big'] = { pos = 1282, section = 32 }, ['Potion of Decay'] = { pos = 1402, section = 21 }, ['Potion of Fire Resistance'] = { pos = 3450, section = 21 }, ['Potion of Fire Resistance Revision 1'] = { pos = 294, section = 45 }, ['Potion of Harming'] = { pos = 3451, section = 21 }, ['Potion of Harming Revision 1'] = { pos = 295, section = 45 }, ['Potion of Healing'] = { pos = 3452, section = 21 }, ['Potion of Healing Revision 1'] = { pos = 296, section = 45 }, ['Potion of Invisibility'] = { pos = 3453, section = 21 }, ['Potion of Invisibility Revision 1'] = { pos = 297, section = 45 }, ['Potion of Leaping'] = { pos = 3454, section = 21 }, ['Potion of Leaping Revision 1'] = { pos = 298, section = 45 }, ['Potion of Levitation'] = { pos = 114, section = 21 }, ['Potion of Luck'] = { pos = 3455, section = 21 }, ['Potion of Luck Revision 1'] = { pos = 299, section = 45 }, ['Potion of Night Vision'] = { pos = 3456, section = 21 }, ['Potion of Night Vision Revision 1'] = { pos = 300, section = 45 }, ['Potion of Poison'] = { pos = 3457, section = 21 }, ['Potion of Poison Revision 1'] = { pos = 301, section = 45 }, ['Potion of Regeneration'] = { pos = 3458, section = 21 }, ['Potion of Regeneration Revision 1'] = { pos = 302, section = 45 }, ['Potion of Slow Falling'] = { pos = 3459, section = 21 }, ['Potion of Slow Falling Revision 1'] = { pos = 303, section = 45 }, ['Potion of Slowness'] = { pos = 3460, section = 21 }, ['Potion of Slowness Revision 1'] = { pos = 304, section = 45 }, ['Potion of Small'] = { pos = 1283, section = 32 }, ['Potion of Strength'] = { pos = 3461, section = 21 }, ['Potion of Strength Revision 1'] = { pos = 305, section = 45 }, ['Potion of Swiftness'] = { pos = 3462, section = 21 }, ['Potion of Swiftness Revision 1'] = { pos = 306, section = 45 }, ['Potion of the Turtle Master'] = { pos = 3463, section = 21 }, ['Potion of the Turtle Master Revision 1'] = { pos = 307, section = 45 }, ['Potion of Water Breathing'] = { pos = 3464, section = 21 }, ['Potion of Water Breathing Revision 1'] = { pos = 308, section = 45 }, ['Potion of Weakness'] = { pos = 3465, section = 21 }, ['Powder Snow'] = { pos = 391, section = 15 }, ['Powder Snow Bucket'] = { pos = 434, section = 4 }, ['Powered Rail'] = { pos = 3343, section = 13 }, Praseodymium = { pos = 1853, section = 34 }, ['Prismarine Brick Slab'] = { pos = 3292, section = 12 }, ['Prismarine Brick Stairs'] = { pos = 111, section = 12 }, ['Prismarine Brick Stairs Old'] = { pos = 1663, section = 12 }, ['Prismarine Bricks'] = { pos = 3373, section = 15 }, ['Prismarine Bricks Slab'] = { pos = 1666, section = 12 }, ['Prismarine Crystals'] = { pos = 3525, section = 23 }, ['Prismarine Shard'] = { pos = 3526, section = 23 }, ['Prismarine Wall'] = { pos = 97, section = 12 }, ['Prismarine Wall BE'] = { pos = 28, section = 12 }, ['Prize Pottery Sherd'] = { pos = 1203, section = 44 }, Promethium = { pos = 1854, section = 34 }, Protactinium = { pos = 1855, section = 34 }, Protoactinium = { pos = 1855, section = 34 }, Pufferfish = { pos = 1692, section = 10 }, ['Pufferfish 3DS'] = { pos = 837, section = 10 }, ['Pufferfish Revision 2'] = { pos = 837, section = 10 }, ['Pufferfish Spawn Egg'] = { pos = 1698, section = 24 }, ['Pufferfish Spawn Egg Revision 1'] = { pos = 1969, section = 39 }, Pumpkin = { pos = 3437, section = 19 }, ['Pumpkin Pie'] = { pos = 3211, section = 10 }, ['Pumpkin Seeds'] = { pos = 1061, section = 19 }, ['Purple Balloon'] = { pos = 1943, section = 33 }, ['Purple Banner'] = { pos = 776, section = 7 }, ['Purple Banner 15w14a'] = { pos = 484, section = 32 }, ['Purple Base Banner'] = { pos = 2986, section = 2 }, ['Purple Base Dexter Canton Banner'] = { pos = 2987, section = 2 }, ['Purple Base Gradient Banner'] = { pos = 2988, section = 2 }, ['Purple Base Indented Banner'] = { pos = 2989, section = 2 }, ['Purple Base Sinister Canton Banner'] = { pos = 2990, section = 2 }, ['Purple Beaker'] = { pos = 1900, section = 35 }, ['Purple Bed'] = { pos = 3183, section = 7 }, ['Purple Bed BE'] = { pos = 1557, section = 7 }, ['Purple Bed LCE'] = { pos = 1557, section = 7 }, ['Purple Bend Banner'] = { pos = 2991, section = 2 }, ['Purple Bend Sinister Banner'] = { pos = 2992, section = 2 }, ['Purple Bordure Banner'] = { pos = 2993, section = 2 }, ['Purple Bordure Indented Banner'] = { pos = 2994, section = 2 }, ['Purple Candle'] = { pos = 421, section = 7 }, ['Purple Carpet'] = { pos = 1633, section = 7 }, ['Purple Carpet Revision 1'] = { pos = 777, section = 40 }, ['Purple Chevron Banner'] = { pos = 2995, section = 2 }, ['Purple Chief Banner'] = { pos = 2996, section = 2 }, ['Purple Chief Dexter Canton Banner'] = { pos = 2997, section = 2 }, ['Purple Chief Indented Banner'] = { pos = 2998, section = 2 }, ['Purple Chief Sinister Canton Banner'] = { pos = 2999, section = 2 }, ['Purple Cloth'] = { pos = 241, section = 40 }, ['Purple Concrete'] = { pos = 1511, section = 7 }, ['Purple Concrete Powder'] = { pos = 1512, section = 7 }, ['Purple Creeper Charge Banner'] = { pos = 3000, section = 2 }, ['Purple Cross Banner'] = { pos = 3001, section = 2 }, ['Purple Dye'] = { pos = 3168, section = 6 }, ['Purple Fess Banner'] = { pos = 3002, section = 2 }, ['Purple Field Masoned Banner'] = { pos = 3003, section = 2 }, ['Purple Firework Star'] = { pos = 818, section = 9 }, ['Purple Flask'] = { pos = 1912, section = 36 }, ['Purple Flower Charge Banner'] = { pos = 3004, section = 2 }, ['Purple Glazed Terracotta'] = { pos = 1513, section = 7 }, ['Purple Globe Banner'] = { pos = 48, section = 2 }, ['Purple Glow Stick'] = { pos = 2004, section = 33 }, ['Purple Gradient Banner'] = { pos = 3005, section = 2 }, ['Purple Inverted Chevron Banner'] = { pos = 3006, section = 2 }, ['Purple Jar'] = { pos = 1926, section = 37 }, ['Purple Lozenge Banner'] = { pos = 3007, section = 2 }, ['Purple Pale Banner'] = { pos = 3008, section = 2 }, ['Purple Pale Dexter Banner'] = { pos = 3009, section = 2 }, ['Purple Pale Sinister Banner'] = { pos = 3010, section = 2 }, ['Purple Paly Banner'] = { pos = 3011, section = 2 }, ['Purple Per Bend Banner'] = { pos = 3012, section = 2 }, ['Purple Per Bend Inverted Banner'] = { pos = 3013, section = 2 }, ['Purple Per Bend Sinister Banner'] = { pos = 3014, section = 2 }, ['Purple Per Bend Sinister Inverted Banner'] = { pos = 3015, section = 2 }, ['Purple Per Fess Banner'] = { pos = 3016, section = 2 }, ['Purple Per Fess Inverted Banner'] = { pos = 3017, section = 2 }, ['Purple Per Pale Banner'] = { pos = 3018, section = 2 }, ['Purple Per Pale Inverted Banner'] = { pos = 3019, section = 2 }, ['Purple Piglin Banner'] = { pos = 371, section = 2 }, ['Purple Roundel Banner'] = { pos = 3020, section = 2 }, ['Purple Saltire Banner'] = { pos = 3021, section = 2 }, ['Purple Shield'] = { pos = 2525, section = 1 }, ['Purple Shulker Box'] = { pos = 1428, section = 7 }, ['Purple Skull Charge Banner'] = { pos = 3022, section = 2 }, ['Purple Snout Banner'] = { pos = 371, section = 2 }, ['Purple Sparkler'] = { pos = 1760, section = 33 }, ['Purple Sparkler (active)'] = { pos = 1761, section = 33 }, ['Purple Stained Glass'] = { pos = 779, section = 7 }, ['Purple Stained Glass Pane'] = { pos = 780, section = 7 }, ['Purple Stained Glass Pane BE'] = { pos = 2020, section = 7 }, ['Purple Terracotta'] = { pos = 778, section = 7 }, ['Purple Thing Banner'] = { pos = 3023, section = 2 }, ['Purple Tinted Glass'] = { pos = 1311, section = 40 }, ['Purple Tinted Glass Pane'] = { pos = 15, section = 40 }, ['Purple Torch'] = { pos = 1762, section = 33 }, ['Purple Wood Planks'] = { pos = 256, section = 30 }, ['Purple Wool'] = { pos = 1535, section = 7 }, ['Purple Wool Revision 2'] = { pos = 781, section = 40 }, ['Purpur Block'] = { pos = 910, section = 12 }, ['Purpur Pillar'] = { pos = 911, section = 12 }, ['Purpur Slab'] = { pos = 3293, section = 12 }, ['Purpur Stairs'] = { pos = 3294, section = 12 }, ['Quartz Bricks'] = { pos = 288, section = 12 }, ['Quartz Pillar'] = { pos = 906, section = 12 }, ['Quartz Slab'] = { pos = 3295, section = 12 }, ['Quartz Stairs'] = { pos = 3296, section = 12 }, ['Quartz Trim Chainmail Boots'] = { pos = 1096, section = 43 }, ['Quartz Trim Chainmail Chestplate'] = { pos = 1098, section = 43 }, ['Quartz Trim Chainmail Helmet'] = { pos = 1099, section = 43 }, ['Quartz Trim Chainmail Leggings'] = { pos = 1101, section = 43 }, ['Quartz Trim Diamond Boots'] = { pos = 1102, section = 43 }, ['Quartz Trim Diamond Chestplate'] = { pos = 1103, section = 43 }, ['Quartz Trim Diamond Helmet'] = { pos = 1104, section = 43 }, ['Quartz Trim Diamond Leggings'] = { pos = 1105, section = 43 }, ['Quartz Trim Golden Boots'] = { pos = 1106, section = 43 }, ['Quartz Trim Golden Chestplate'] = { pos = 1107, section = 43 }, ['Quartz Trim Golden Helmet'] = { pos = 1108, section = 43 }, ['Quartz Trim Golden Leggings'] = { pos = 1109, section = 43 }, ['Quartz Trim Iron Boots'] = { pos = 1110, section = 43 }, ['Quartz Trim Iron Chestplate'] = { pos = 1111, section = 43 }, ['Quartz Trim Iron Helmet'] = { pos = 1112, section = 43 }, ['Quartz Trim Iron Leggings'] = { pos = 1113, section = 43 }, ['Quartz Trim Leather Boots'] = { pos = 1114, section = 43 }, ['Quartz Trim Leather Cap'] = { pos = 1115, section = 43 }, ['Quartz Trim Leather Pants'] = { pos = 1116, section = 43 }, ['Quartz Trim Leather Tunic'] = { pos = 1117, section = 43 }, ['Quartz Trim Netherite Boots'] = { pos = 1118, section = 43 }, ['Quartz Trim Netherite Chestplate'] = { pos = 1120, section = 43 }, ['Quartz Trim Netherite Helmet'] = { pos = 1121, section = 43 }, ['Quartz Trim Netherite Leggings'] = { pos = 1122, section = 43 }, ['Quartz Trim Turtle Shell'] = { pos = 1123, section = 43 }, Quiver = { pos = 2088, section = 30 }, ['Rabbit Hide'] = { pos = 3527, section = 23 }, ['Rabbit Spawn Egg'] = { pos = 1157, section = 24 }, ['Rabbit Stew'] = { pos = 3212, section = 10 }, ["Rabbit's Foot"] = { pos = 3144, section = 3 }, Radium = { pos = 1856, section = 34 }, Radon = { pos = 1857, section = 34 }, Rail = { pos = 3344, section = 13 }, ['Rainbow Bed'] = { pos = 3646, section = 38 }, ['Rainbow Carpet'] = { pos = 3647, section = 38 }, ['Rainbow Wool'] = { pos = 3648, section = 38 }, ['Raiser Armor Trim'] = { pos = 1215, section = 41 }, ['Raiser Armor Trim Smithing Template'] = { pos = 1215, section = 41 }, ['Ravager Spawn Egg'] = { pos = 2411, section = 24 }, ['Raw Beef'] = { pos = 3213, section = 10 }, ['Raw Chicken'] = { pos = 3214, section = 10 }, ['Raw Cod'] = { pos = 1693, section = 10 }, ['Raw Copper'] = { pos = 542, section = 23 }, ['Raw Fish'] = { pos = 842, section = 10 }, ['Raw Fish Revision 1'] = { pos = 842, section = 10 }, ['Raw Gold'] = { pos = 543, section = 23 }, ['Raw Iron'] = { pos = 544, section = 23 }, ['Raw Mutton'] = { pos = 3215, section = 10 }, ['Raw Porkchop'] = { pos = 3216, section = 10 }, ['Raw Rabbit'] = { pos = 3217, section = 10 }, ['Raw Salmon'] = { pos = 1694, section = 10 }, ['Raw Salmon 3DS'] = { pos = 846, section = 10 }, ['Raw Salmon Revision 1'] = { pos = 846, section = 10 }, ['Reality Vision'] = { pos = 1638, section = 32 }, ['Recipe Book'] = { pos = 385, section = 30 }, ['Recovery Compass'] = { pos = 623, section = 25 }, ['Red Balloon'] = { pos = 1944, section = 33 }, ['Red Banner'] = { pos = 782, section = 7 }, ['Red Banner 15w14a'] = { pos = 485, section = 32 }, ['Red Base Banner'] = { pos = 3024, section = 2 }, ['Red Base Dexter Canton Banner'] = { pos = 3025, section = 2 }, ['Red Base Gradient Banner'] = { pos = 3026, section = 2 }, ['Red Base Indented Banner'] = { pos = 3027, section = 2 }, ['Red Base Sinister Canton Banner'] = { pos = 3028, section = 2 }, ['Red Beaker'] = { pos = 1901, section = 35 }, ['Red Bed'] = { pos = 3184, section = 7 }, ['Red Bed BE'] = { pos = 1558, section = 7 }, ['Red Bed LCE'] = { pos = 1558, section = 7 }, ['Red Bed Revision 1'] = { pos = 1558, section = 7 }, ['Red Bend Banner'] = { pos = 3029, section = 2 }, ['Red Bend Sinister Banner'] = { pos = 3030, section = 2 }, ['Red Bordure Banner'] = { pos = 3032, section = 2 }, ['Red Bordure Indented Banner'] = { pos = 3031, section = 2 }, ['Red Candle'] = { pos = 422, section = 7 }, ['Red Carpet'] = { pos = 1634, section = 7 }, ['Red Carpet Revision 1'] = { pos = 783, section = 40 }, ['Red Chevron Banner'] = { pos = 3033, section = 2 }, ['Red Chief Banner'] = { pos = 3034, section = 2 }, ['Red Chief Dexter Canton Banner'] = { pos = 3035, section = 2 }, ['Red Chief Indented Banner'] = { pos = 3036, section = 2 }, ['Red Chief Sinister Canton Banner'] = { pos = 3037, section = 2 }, ['Red Cloth'] = { pos = 239, section = 40 }, ['Red Concrete'] = { pos = 1514, section = 7 }, ['Red Concrete Powder'] = { pos = 1515, section = 7 }, ['Red Creeper Charge Banner'] = { pos = 3038, section = 2 }, ['Red Cross Banner'] = { pos = 3039, section = 2 }, ['Red Dye'] = { pos = 3169, section = 6 }, ['Red Fess Banner'] = { pos = 3040, section = 2 }, ['Red Field Masoned Banner'] = { pos = 3041, section = 2 }, ['Red Firework Star'] = { pos = 819, section = 9 }, ['Red Flask'] = { pos = 1913, section = 36 }, ['Red Flower Charge Banner'] = { pos = 3042, section = 2 }, ['Red Glazed Terracotta'] = { pos = 1516, section = 7 }, ['Red Globe Banner'] = { pos = 49, section = 2 }, ['Red Glow Stick'] = { pos = 2005, section = 33 }, ['Red Gradient Banner'] = { pos = 3043, section = 2 }, ['Red Inverted Chevron Banner'] = { pos = 3044, section = 2 }, ['Red Jar'] = { pos = 1927, section = 37 }, ['Red Key'] = { pos = 452, section = 32 }, ['Red Lozenge Banner'] = { pos = 3045, section = 2 }, ['Red Mushroom'] = { pos = 3439, section = 19 }, ['Red Mushroom Block'] = { pos = 3438, section = 19 }, ['Red Nether Brick Slab'] = { pos = 3297, section = 12 }, ['Red Nether Brick Stairs'] = { pos = 3298, section = 12 }, ['Red Nether Brick Wall'] = { pos = 3299, section = 12 }, ['Red Nether Brick Wall BE'] = { pos = 30, section = 12 }, ['Red Nether Bricks'] = { pos = 1367, section = 12 }, ['Red Pale Banner'] = { pos = 3046, section = 2 }, ['Red Pale Dexter Banner'] = { pos = 3047, section = 2 }, ['Red Pale Sinister Banner'] = { pos = 3048, section = 2 }, ['Red Paly Banner'] = { pos = 3049, section = 2 }, ['Red Per Bend Banner'] = { pos = 3050, section = 2 }, ['Red Per Bend Inverted Banner'] = { pos = 3051, section = 2 }, ['Red Per Bend Sinister Banner'] = { pos = 3052, section = 2 }, ['Red Per Bend Sinister Inverted Banner'] = { pos = 3053, section = 2 }, ['Red Per Fess Banner'] = { pos = 3054, section = 2 }, ['Red Per Fess Inverted Banner'] = { pos = 3055, section = 2 }, ['Red Per Pale Banner'] = { pos = 3056, section = 2 }, ['Red Per Pale Inverted Banner'] = { pos = 3057, section = 2 }, ['Red Piglin Banner'] = { pos = 372, section = 2 }, ['Red Roundel Banner'] = { pos = 3058, section = 2 }, ['Red Saltire Banner'] = { pos = 3059, section = 2 }, ['Red Sand'] = { pos = 3374, section = 15 }, ['Red Sandstone'] = { pos = 3375, section = 15 }, ['Red Sandstone Slab'] = { pos = 3300, section = 12 }, ['Red Sandstone Stairs'] = { pos = 3301, section = 12 }, ['Red Sandstone Wall'] = { pos = 3302, section = 12 }, ['Red Sandstone Wall BE'] = { pos = 31, section = 12 }, ['Red Shield'] = { pos = 2526, section = 1 }, ['Red Shulker Box'] = { pos = 1616, section = 7 }, ['Red Shulker Box Revision 1'] = { pos = 1429, section = 40 }, ['Red Skull Charge Banner'] = { pos = 3060, section = 2 }, ['Red Snout Banner'] = { pos = 372, section = 2 }, ['Red Sparkler'] = { pos = 1763, section = 33 }, ['Red Sparkler (active)'] = { pos = 1764, section = 33 }, ['Red Stained Glass'] = { pos = 785, section = 7 }, ['Red Stained Glass Pane'] = { pos = 786, section = 7 }, ['Red Stained Glass Pane BE'] = { pos = 2021, section = 7 }, ['Red Terracotta'] = { pos = 784, section = 7 }, ['Red Thing Banner'] = { pos = 3061, section = 2 }, ['Red Tinted Glass'] = { pos = 1312, section = 40 }, ['Red Tinted Glass Pane'] = { pos = 16, section = 40 }, ['Red Torch'] = { pos = 1765, section = 33 }, ['Red Tulip'] = { pos = 3440, section = 19 }, ['Red Wood Planks'] = { pos = 257, section = 30 }, ['Red Wool'] = { pos = 1536, section = 7 }, ['Red Wool Revision 2'] = { pos = 787, section = 40 }, Redstone = { pos = 3528, section = 23 }, ['Redstone Comparator'] = { pos = 3345, section = 13 }, ['Redstone Dust'] = { pos = 3528, section = 23 }, ['Redstone Lamp'] = { pos = 3346, section = 13 }, ['Redstone Lamp Post-Flip'] = { pos = 381, section = 29 }, ['Redstone Ore'] = { pos = 3397, section = 18 }, ['Redstone Repeater'] = { pos = 3347, section = 13 }, ['Redstone Revision 1'] = { pos = 1138, section = 29 }, ['Redstone Torch'] = { pos = 3348, section = 13 }, ['Redstone Trim Chainmail Boots'] = { pos = 1124, section = 43 }, ['Redstone Trim Chainmail Chestplate'] = { pos = 1125, section = 43 }, ['Redstone Trim Chainmail Helmet'] = { pos = 1126, section = 43 }, ['Redstone Trim Chainmail Leggings'] = { pos = 1127, section = 43 }, ['Redstone Trim Diamond Boots'] = { pos = 1128, section = 43 }, ['Redstone Trim Diamond Chestplate'] = { pos = 1129, section = 43 }, ['Redstone Trim Diamond Helmet'] = { pos = 1130, section = 43 }, ['Redstone Trim Diamond Leggings'] = { pos = 1131, section = 43 }, ['Redstone Trim Golden Boots'] = { pos = 1132, section = 43 }, ['Redstone Trim Golden Chestplate'] = { pos = 1133, section = 43 }, ['Redstone Trim Golden Helmet'] = { pos = 1134, section = 43 }, ['Redstone Trim Golden Leggings'] = { pos = 1135, section = 43 }, ['Redstone Trim Iron Boots'] = { pos = 1136, section = 43 }, ['Redstone Trim Iron Chestplate'] = { pos = 1137, section = 43 }, ['Redstone Trim Iron Helmet'] = { pos = 1139, section = 43 }, ['Redstone Trim Iron Leggings'] = { pos = 1141, section = 43 }, ['Redstone Trim Leather Boots'] = { pos = 1170, section = 43 }, ['Redstone Trim Leather Cap'] = { pos = 1171, section = 43 }, ['Redstone Trim Leather Pants'] = { pos = 1172, section = 43 }, ['Redstone Trim Leather Tunic'] = { pos = 1173, section = 43 }, ['Redstone Trim Netherite Boots'] = { pos = 1174, section = 43 }, ['Redstone Trim Netherite Chestplate'] = { pos = 1175, section = 43 }, ['Redstone Trim Netherite Helmet'] = { pos = 1176, section = 43 }, ['Redstone Trim Netherite Leggings'] = { pos = 1177, section = 43 }, ['Redstone Trim Turtle Shell'] = { pos = 1178, section = 43 }, ['Reinforced Deepslate'] = { pos = 582, section = 5 }, ['Respawn Anchor'] = { pos = 207, section = 12 }, Rhenium = { pos = 1858, section = 34 }, Rhodium = { pos = 1859, section = 34 }, ['Rib Armor Trim'] = { pos = 802, section = 41 }, ['Rib Armor Trim Smithing Template'] = { pos = 802, section = 41 }, ['Right Curly'] = { pos = 1284, section = 32 }, ['Right Square'] = { pos = 1285, section = 32 }, Roentgenium = { pos = 1860, section = 34 }, ['Rooted Dirt'] = { pos = 463, section = 15 }, Rose = { pos = 1065, section = 29 }, ['Rose BE'] = { pos = 1079, section = 29 }, ['Rose Bush'] = { pos = 3441, section = 19 }, ['Rose Bush 3DS'] = { pos = 1573, section = 29 }, ['Rose Bush BE Revision 2'] = { pos = 1573, section = 29 }, ['Rose Bush LCE Revision 2'] = { pos = 1573, section = 29 }, ['Rose Cloth'] = { pos = 237, section = 40 }, ['Rose Red'] = { pos = 703, section = 6 }, ['Rotten Flesh'] = { pos = 3218, section = 10 }, Rubidium = { pos = 1861, section = 34 }, Ruby = { pos = 1313, section = 29 }, ['Ruby Ore'] = { pos = 2242, section = 29 }, Ruthenium = { pos = 1862, section = 34 }, Rutherfordium = { pos = 1863, section = 34 }, Saddle = { pos = 3582, section = 25 }, ['Salmon Spawn Egg'] = { pos = 1699, section = 24 }, ['Salmon Spawn Egg Revision 1'] = { pos = 1970, section = 39 }, Salt = { pos = 1766, section = 33 }, Samarium = { pos = 1864, section = 34 }, Sand = { pos = 3376, section = 15 }, Sandstone = { pos = 3377, section = 15 }, ['Sandstone Slab'] = { pos = 3303, section = 12 }, ['Sandstone Stairs'] = { pos = 3304, section = 12 }, ['Sandstone Stairs Left'] = { pos = 2262, section = 42 }, ['Sandstone Wall'] = { pos = 3305, section = 12 }, ['Sandstone Wall BE'] = { pos = 32, section = 12 }, ['Savanna Village Map'] = { pos = 1326, section = 25 }, ['Savanna Village Map BE'] = { pos = 1327, section = 25 }, Scaffolding = { pos = 2414, section = 12 }, ['Scaffolding BE'] = { pos = 1068, section = 12 }, Scandium = { pos = 1865, section = 34 }, Sculk = { pos = 556, section = 15 }, ['Sculk Block'] = { pos = 556, section = 15 }, ['Sculk Catalyst'] = { pos = 557, section = 15 }, ['Sculk Catalyst BE'] = { pos = 628, section = 15 }, ['Sculk Sensor'] = { pos = 439, section = 13 }, ['Sculk Sensor BE'] = { pos = 458, section = 13 }, ['Sculk Shrieker'] = { pos = 613, section = 15 }, ['Sculk Shrieker BE'] = { pos = 558, section = 15 }, ['Sculk Vein'] = { pos = 559, section = 15 }, Scute = { pos = 1684, section = 23 }, ['Sea Lantern BE'] = { pos = 209, section = 15 }, ['Sea Pickle'] = { pos = 1736, section = 19 }, Seaborgium = { pos = 1866, section = 34 }, Seagrass = { pos = 2029, section = 19 }, Seeds = { pos = 1067, section = 19 }, Selenium = { pos = 1867, section = 34 }, ['Sentry Armor Trim'] = { pos = 803, section = 41 }, ['Sentry Armor Trim Smithing Template'] = { pos = 803, section = 41 }, ['Shaper Armor Trim'] = { pos = 1216, section = 41 }, ['Shaper Armor Trim Smithing Template'] = { pos = 1216, section = 41 }, ['Sheaf Pottery Sherd'] = { pos = 1233, section = 44 }, Shears = { pos = 3583, section = 25 }, ['Sheep Spawn Egg'] = { pos = 1158, section = 24 }, ['Sheep Spawn Egg Revision 1'] = { pos = 1392, section = 39 }, ['Shelter Pottery Sherd'] = { pos = 1234, section = 44 }, Shield = { pos = 2527, section = 1 }, ['Short Tag'] = { pos = 1286, section = 32 }, Shroomlight = { pos = 151, section = 16 }, ['Shroomlight BE'] = { pos = 211, section = 16 }, ['Shrub LCE'] = { pos = 1039, section = 19 }, ['Shulker Box'] = { pos = 1615, section = 7 }, ['Shulker Shell'] = { pos = 3529, section = 23 }, ['Shulker Spawn Egg'] = { pos = 1159, section = 24 }, ['Shulker Spawn Egg Revision 1'] = { pos = 1564, section = 39 }, ['Sign Revision 1'] = { pos = 354, section = 29 }, ['Silence Armor Trim'] = { pos = 1217, section = 41 }, ['Silence Armor Trim Smithing Template'] = { pos = 1217, section = 41 }, Silicon = { pos = 1868, section = 34 }, Silver = { pos = 1775, section = 34 }, ['Silver Balloon'] = { pos = 1945, section = 33 }, ['Silverfish Spawn Egg'] = { pos = 1160, section = 24 }, ['Silverfish Spawn Egg Revision 1'] = { pos = 1393, section = 39 }, ['Silverfish Spawn Egg Revision 2'] = { pos = 1565, section = 39 }, ['Skeleton Horse Spawn Egg'] = { pos = 1376, section = 24 }, ['Skeleton Skull'] = { pos = 967, section = 14 }, ['Skeleton Skull BE'] = { pos = 218, section = 14 }, ['Skeleton Spawn Egg'] = { pos = 1161, section = 24 }, ['Skeleton Spawn Egg Revision 1'] = { pos = 1394, section = 39 }, ['Skull Pottery Sherd'] = { pos = 1204, section = 44 }, Slate = { pos = 1596, section = 20 }, ['Slightly Damaged Anvil'] = { pos = 1253, section = 26 }, ['Slime Block'] = { pos = 920, section = 12 }, ['Slime Spawn Egg'] = { pos = 1162, section = 24 }, ['Slime Spawn Egg Revision 1'] = { pos = 1395, section = 39 }, Slimeball = { pos = 3530, section = 23 }, ['Small Amethyst Bud'] = { pos = 427, section = 15 }, ['Small Dripleaf'] = { pos = 470, section = 19 }, ['Smarter Watch'] = { pos = 1639, section = 32 }, ['Smithing Table'] = { pos = 2454, section = 26 }, ['Smithing Table Revision 1'] = { pos = 2447, section = 26 }, ['Smithing Template'] = { pos = 801, section = 41 }, Smoker = { pos = 2448, section = 26 }, ['Smooth Basalt'] = { pos = 519, section = 15 }, ['Smooth Quartz'] = { pos = 867, section = 12 }, ['Smooth Quartz Block'] = { pos = 867, section = 12 }, ['Smooth Quartz Slab'] = { pos = 3306, section = 12 }, ['Smooth Quartz Stairs'] = { pos = 3307, section = 12 }, ['Smooth Red Sandstone'] = { pos = 3310, section = 12 }, ['Smooth Red Sandstone Slab'] = { pos = 3308, section = 12 }, ['Smooth Red Sandstone Stairs'] = { pos = 3309, section = 12 }, ['Smooth Sandstone'] = { pos = 3313, section = 12 }, ['Smooth Sandstone Slab'] = { pos = 3311, section = 12 }, ['Smooth Sandstone Stairs'] = { pos = 3312, section = 12 }, ['Smooth Stone'] = { pos = 923, section = 12 }, ['Smooth Stone Bricks'] = { pos = 3380, section = 15 }, ['Smooth Stone Slab'] = { pos = 3314, section = 12 }, ['Sniffer Egg'] = { pos = 1211, section = 5 }, ['Sniffer Spawn Egg'] = { pos = 1205, section = 24 }, ['Snort Pottery Sherd'] = { pos = 1236, section = 44 }, ['Snout Armor Trim'] = { pos = 808, section = 41 }, ['Snout Armor Trim Smithing Template'] = { pos = 808, section = 41 }, Snow = { pos = 3378, section = 15 }, ['Snow Block'] = { pos = 3315, section = 12 }, ['Snow Golem Spawn Egg'] = { pos = 697, section = 24 }, Snowball = { pos = 3638, section = 28 }, ['Snowy Village Map'] = { pos = 1326, section = 25 }, ['Snowy Village Map BE'] = { pos = 1327, section = 25 }, Soap = { pos = 1915, section = 37 }, Sodium = { pos = 1836, section = 34 }, ['Sodium Acetate'] = { pos = 1915, section = 37 }, ['Sodium Fluoride'] = { pos = 1897, section = 35 }, ['Sodium Hydride'] = { pos = 1923, section = 37 }, ['Sodium Hypochlorite'] = { pos = 1889, section = 35 }, ['Sodium Oxide'] = { pos = 1915, section = 37 }, ['Soul Campfire'] = { pos = 287, section = 26 }, ['Soul Fire Lantern Revision 1'] = { pos = 195, section = 29 }, ['Soul Lantern'] = { pos = 157, section = 26 }, ['Soul Sand'] = { pos = 3388, section = 16 }, ['Soul Soil'] = { pos = 152, section = 16 }, ['Soul Torch'] = { pos = 156, section = 17 }, ['Spawn Agent'] = { pos = 2379, section = 24 }, ['Spawn Allay'] = { pos = 901, section = 24 }, ['Spawn Axolotl'] = { pos = 440, section = 24 }, ['Spawn Bat'] = { pos = 1142, section = 24 }, ['Spawn Bee'] = { pos = 104, section = 24 }, ['Spawn Blaze'] = { pos = 1143, section = 24 }, ['Spawn Camel'] = { pos = 683, section = 24 }, ['Spawn Cat'] = { pos = 2380, section = 24 }, ['Spawn Cat BE'] = { pos = 2380, section = 24 }, ['Spawn Cave Spider'] = { pos = 1144, section = 24 }, ['Spawn Chicken'] = { pos = 1145, section = 24 }, ['Spawn Cod'] = { pos = 1697, section = 24 }, ['Spawn Cow'] = { pos = 1146, section = 24 }, ['Spawn Creeper'] = { pos = 1147, section = 24 }, ['Spawn Dolphin'] = { pos = 1967, section = 24 }, ['Spawn Donkey'] = { pos = 1371, section = 24 }, ['Spawn Drowned'] = { pos = 1727, section = 24 }, ['Spawn Egg'] = { pos = 2361, section = 39 }, ['Spawn Elder Guardian'] = { pos = 1372, section = 24 }, ['Spawn Ender Dragon'] = { pos = 695, section = 24 }, ['Spawn Enderman'] = { pos = 1148, section = 24 }, ['Spawn Endermite'] = { pos = 1149, section = 24 }, ['Spawn Evoker'] = { pos = 1411, section = 24 }, ['Spawn Firefly'] = { pos = 632, section = 24 }, ['Spawn Fox'] = { pos = 2464, section = 24 }, ['Spawn Frog'] = { pos = 575, section = 24 }, ['Spawn Ghast'] = { pos = 1150, section = 24 }, ['Spawn Glow Squid'] = { pos = 457, section = 24 }, ['Spawn Goat'] = { pos = 392, section = 24 }, ['Spawn Guardian'] = { pos = 1151, section = 24 }, ['Spawn Hoglin'] = { pos = 194, section = 24 }, ['Spawn Horse'] = { pos = 1152, section = 24 }, ['Spawn Husk'] = { pos = 1373, section = 24 }, ['Spawn Iron Golem'] = { pos = 696, section = 24 }, ['Spawn Llama'] = { pos = 1412, section = 24 }, ['Spawn Magma Cube'] = { pos = 1153, section = 24 }, ['Spawn Mask'] = { pos = 2381, section = 24 }, ['Spawn Mooshroom'] = { pos = 1154, section = 24 }, ['Spawn Mule'] = { pos = 1374, section = 24 }, ['Spawn NPC'] = { pos = 1590, section = 24 }, ['Spawn Ocelot'] = { pos = 1155, section = 24 }, ['Spawn Panda'] = { pos = 2374, section = 24 }, ['Spawn Panda BE'] = { pos = 2374, section = 24 }, ['Spawn Parrot'] = { pos = 1544, section = 24 }, ['Spawn Phantom'] = { pos = 1974, section = 24 }, ['Spawn Pig'] = { pos = 1156, section = 24 }, ['Spawn Piglin Brute'] = { pos = 262, section = 24 }, ['Spawn Pillager'] = { pos = 2413, section = 24 }, ['Spawn Polar Bear'] = { pos = 1375, section = 24 }, ['Spawn Pufferfish'] = { pos = 1698, section = 24 }, ['Spawn Rabbit'] = { pos = 1157, section = 24 }, ['Spawn Ravager'] = { pos = 2411, section = 24 }, ['Spawn Salmon'] = { pos = 1699, section = 24 }, ['Spawn Sheep'] = { pos = 1158, section = 24 }, ['Spawn Shulker'] = { pos = 1159, section = 24 }, ['Spawn Silverfish'] = { pos = 1160, section = 24 }, ['Spawn Skeleton'] = { pos = 1161, section = 24 }, ['Spawn Skeleton Horse'] = { pos = 1376, section = 24 }, ['Spawn Slime'] = { pos = 1162, section = 24 }, ['Spawn Snow Golem'] = { pos = 697, section = 24 }, ['Spawn Spider'] = { pos = 1163, section = 24 }, ['Spawn Squid'] = { pos = 1164, section = 24 }, ['Spawn Stray'] = { pos = 1377, section = 24 }, ['Spawn Strider'] = { pos = 223, section = 24 }, ['Spawn Tadpole'] = { pos = 576, section = 24 }, ['Spawn Trader Llama'] = { pos = 2462, section = 24 }, ['Spawn Tropical Fish'] = { pos = 1722, section = 24 }, ['Spawn Turtle'] = { pos = 1729, section = 24 }, ['Spawn Vex'] = { pos = 1413, section = 24 }, ['Spawn Villager'] = { pos = 1165, section = 24 }, ['Spawn Vindicator'] = { pos = 1414, section = 24 }, ['Spawn Wandering Trader'] = { pos = 389, section = 24 }, ['Spawn Wandering Trader BE'] = { pos = 389, section = 24 }, ['Spawn Warden'] = { pos = 581, section = 24 }, ['Spawn Witch'] = { pos = 1166, section = 24 }, ['Spawn Wither Skeleton'] = { pos = 1378, section = 24 }, ['Spawn Wolf'] = { pos = 1167, section = 24 }, ['Spawn Zoglin'] = { pos = 268, section = 24 }, ['Spawn Zombie'] = { pos = 1168, section = 24 }, ['Spawn Zombie Horse'] = { pos = 1379, section = 24 }, ['Spawn Zombie Pigman'] = { pos = 1169, section = 24 }, ['Spawn Zombie Villager'] = { pos = 1349, section = 24 }, Spawner = { pos = 985, section = 15 }, ['Spectral Arrow'] = { pos = 3639, section = 28 }, ['Spectral Arrow Revision 1'] = { pos = 1291, section = 28 }, ['Spider Eye'] = { pos = 3145, section = 3 }, ['Spider Spawn Egg'] = { pos = 1163, section = 24 }, ['Spider Spawn Egg Revision 1'] = { pos = 1396, section = 39 }, ['Spire Armor Trim'] = { pos = 822, section = 41 }, ['Spire Armor Trim Smithing Template'] = { pos = 822, section = 41 }, ['Splash Awkward Potion Revision 1'] = { pos = 332, section = 47 }, ['Splash Bottle of Mob'] = { pos = 1287, section = 32 }, ['Splash Mundane Potion'] = { pos = 1100, section = 22 }, ['Splash Mundane Potion Revision 1'] = { pos = 333, section = 47 }, ['Splash Potion of Big'] = { pos = 1288, section = 32 }, ['Splash Potion of Decay'] = { pos = 1404, section = 22 }, ['Splash Potion of Fire Resistance'] = { pos = 3468, section = 22 }, ['Splash Potion of Fire Resistance Revision 1'] = { pos = 334, section = 47 }, ['Splash Potion of Harming'] = { pos = 3469, section = 22 }, ['Splash Potion of Harming Revision 1'] = { pos = 335, section = 47 }, ['Splash Potion of Healing'] = { pos = 3470, section = 22 }, ['Splash Potion of Healing Revision 1'] = { pos = 336, section = 47 }, ['Splash Potion of Invisibility'] = { pos = 3471, section = 22 }, ['Splash Potion of Invisibility Revision 1'] = { pos = 337, section = 47 }, ['Splash Potion of Leaping'] = { pos = 3472, section = 22 }, ['Splash Potion of Leaping Revision 1'] = { pos = 338, section = 47 }, ['Splash Potion of Levitation'] = { pos = 115, section = 22 }, ['Splash Potion of Luck'] = { pos = 3473, section = 22 }, ['Splash Potion of Luck Revision 1'] = { pos = 339, section = 47 }, ['Splash Potion of Night Vision'] = { pos = 3474, section = 22 }, ['Splash Potion of Night Vision Revision 1'] = { pos = 340, section = 47 }, ['Splash Potion of Poison'] = { pos = 3475, section = 22 }, ['Splash Potion of Poison Revision 1'] = { pos = 341, section = 47 }, ['Splash Potion of Regeneration'] = { pos = 3476, section = 22 }, ['Splash Potion of Regeneration Revision 1'] = { pos = 342, section = 47 }, ['Splash Potion of Slow Falling'] = { pos = 3477, section = 22 }, ['Splash Potion of Slow Falling Revision 1'] = { pos = 343, section = 47 }, ['Splash Potion of Slowness'] = { pos = 3478, section = 22 }, ['Splash Potion of Slowness Revision 1'] = { pos = 344, section = 47 }, ['Splash Potion of Small'] = { pos = 1289, section = 32 }, ['Splash Potion of Strength'] = { pos = 3479, section = 22 }, ['Splash Potion of Strength Revision 1'] = { pos = 345, section = 47 }, ['Splash Potion of Swiftness'] = { pos = 3480, section = 22 }, ['Splash Potion of Swiftness Revision 1'] = { pos = 346, section = 47 }, ['Splash Potion of the Turtle Master'] = { pos = 3481, section = 22 }, ['Splash Potion of the Turtle Master Revision 1'] = { pos = 347, section = 47 }, ['Splash Potion of Water Breathing'] = { pos = 3467, section = 22 }, ['Splash Potion of Water Breathing Revision 1'] = { pos = 348, section = 47 }, ['Splash Potion of Weakness'] = { pos = 3482, section = 22 }, ['Splash Thick Potion Revision 1'] = { pos = 349, section = 47 }, ['Splash Uncraftable Potion Revision 1'] = { pos = 350, section = 47 }, ['Splash Water Bottle'] = { pos = 1100, section = 22 }, ['Splash Water Bottle Revision 1'] = { pos = 351, section = 47 }, Sponge = { pos = 3613, section = 26 }, ['Sponge Revision 1'] = { pos = 2243, section = 29 }, ['Spore Blossom'] = { pos = 471, section = 19 }, ['Spring Green Cloth'] = { pos = 240, section = 40 }, ['Spruce Boat'] = { pos = 634, section = 27 }, ['Spruce Boat Revision 2'] = { pos = 3629, section = 29 }, ['Spruce Boat with Chest'] = { pos = 619, section = 27 }, ['Spruce Boat with Chest BE Revision 1'] = { pos = 617, section = 29 }, ['Spruce Button'] = { pos = 3349, section = 13 }, ['Spruce Door'] = { pos = 572, section = 13 }, ['Spruce Door Revision 3'] = { pos = 954, section = 13 }, ['Spruce Fence'] = { pos = 642, section = 12 }, ['Spruce Fence BE'] = { pos = 3317, section = 12 }, ['Spruce Fence Gate'] = { pos = 3316, section = 13 }, ['Spruce Fence Gate BE'] = { pos = 57, section = 13 }, ['Spruce Hanging Sign'] = { pos = 660, section = 5 }, ['Spruce Leaves'] = { pos = 3442, section = 19 }, ['Spruce Log'] = { pos = 3443, section = 19 }, ['Spruce Log Revision 1'] = { pos = 2244, section = 29 }, ['Spruce Planks'] = { pos = 929, section = 12 }, ['Spruce Pressure Plate'] = { pos = 3350, section = 13 }, ['Spruce Sapling'] = { pos = 3444, section = 19 }, ['Spruce Sign'] = { pos = 2394, section = 17 }, ['Spruce Slab'] = { pos = 3318, section = 12 }, ['Spruce Stairs'] = { pos = 3319, section = 12 }, ['Spruce Stairs Left'] = { pos = 2263, section = 42 }, ['Spruce Trapdoor'] = { pos = 1647, section = 13 }, ['Spruce Wood'] = { pos = 3320, section = 12 }, ['Spruce Wood Button'] = { pos = 3349, section = 13 }, ['Spruce Wood Door'] = { pos = 572, section = 13 }, ['Spruce Wood Fence'] = { pos = 642, section = 12 }, ['Spruce Wood Fence Gate'] = { pos = 3316, section = 13 }, ['Spruce Wood Planks'] = { pos = 929, section = 12 }, ['Spruce Wood Pressure Plate'] = { pos = 3350, section = 13 }, ['Spruce Wood Sign'] = { pos = 2394, section = 17 }, ['Spruce Wood Slab'] = { pos = 3318, section = 12 }, ['Spruce Wood Stairs'] = { pos = 3319, section = 12 }, ['Spruce Wood Trapdoor'] = { pos = 1647, section = 13 }, Spyglass = { pos = 428, section = 25 }, ['Squid Spawn Egg'] = { pos = 1164, section = 24 }, ['Squid Spawn Egg Revision 1'] = { pos = 1397, section = 39 }, ['Sssyntax Error'] = { pos = 1290, section = 32 }, Stannum = { pos = 1869, section = 34 }, Steak = { pos = 848, section = 10 }, Stibium = { pos = 1774, section = 34 }, Stick = { pos = 1140, section = 23 }, ['Sticky Piston'] = { pos = 3351, section = 13 }, ['Still Lava'] = { pos = 2119, section = 29 }, Stone = { pos = 1000, section = 15 }, ['Stone Axe'] = { pos = 3584, section = 25 }, ['Stone Brick Slab'] = { pos = 933, section = 12 }, ['Stone Brick Stairs'] = { pos = 3322, section = 12 }, ['Stone Brick Stairs Left'] = { pos = 2264, section = 42 }, ['Stone Brick Wall'] = { pos = 3323, section = 12 }, ['Stone Brick Wall BE'] = { pos = 33, section = 12 }, ['Stone Bricks'] = { pos = 3380, section = 15 }, ['Stone Bricks Monster Egg'] = { pos = 3380, section = 15 }, ['Stone Button'] = { pos = 3352, section = 13 }, ['Stone Heart'] = { pos = 121, section = 32 }, ['Stone Hoe'] = { pos = 3585, section = 25 }, ['Stone Monster Egg'] = { pos = 1000, section = 15 }, ['Stone Pickaxe'] = { pos = 3586, section = 25 }, ['Stone Pressure Plate'] = { pos = 3353, section = 13 }, ['Stone Pressure Plate Revision 1'] = { pos = 2091, section = 29 }, ['Stone Revision 2'] = { pos = 376, section = 29 }, ['Stone Shovel'] = { pos = 3587, section = 25 }, ['Stone Slab'] = { pos = 3324, section = 12 }, ['Stone Stairs'] = { pos = 3325, section = 12 }, ['Stone Sword'] = { pos = 3640, section = 28 }, ['Stonecutter BE'] = { pos = 1082, section = 20 }, ['Stonecutter Revision 1'] = { pos = 2449, section = 26 }, ['Stray Spawn Egg'] = { pos = 1377, section = 24 }, ['Stray Spawn Egg Revision 1'] = { pos = 1566, section = 39 }, ['Strider Spawn Egg'] = { pos = 223, section = 24 }, String = { pos = 3531, section = 23 }, ['String Tag'] = { pos = 1292, section = 32 }, ['Stripped Acacia Log'] = { pos = 1670, section = 12 }, ['Stripped Acacia Wood'] = { pos = 2103, section = 12 }, ['Stripped Birch Log'] = { pos = 1671, section = 12 }, ['Stripped Birch Wood'] = { pos = 2101, section = 12 }, ['Stripped Cherry Log'] = { pos = 1186, section = 12 }, ['Stripped Cherry Wood'] = { pos = 1187, section = 12 }, ['Stripped Crimson Hyphae'] = { pos = 200, section = 16 }, ['Stripped Crimson Stem'] = { pos = 175, section = 16 }, ['Stripped Dark Oak Log'] = { pos = 1672, section = 12 }, ['Stripped Dark Oak Wood'] = { pos = 2104, section = 12 }, ['Stripped Jungle Log'] = { pos = 1673, section = 12 }, ['Stripped Jungle Wood'] = { pos = 2102, section = 12 }, ['Stripped Mangrove Log'] = { pos = 597, section = 12 }, ['Stripped Mangrove Wood'] = { pos = 598, section = 12 }, ['Stripped Oak Log'] = { pos = 1674, section = 12 }, ['Stripped Oak Wood'] = { pos = 2099, section = 12 }, ['Stripped Spruce Log'] = { pos = 1675, section = 12 }, ['Stripped Spruce Wood'] = { pos = 2100, section = 12 }, ['Stripped Warped Hyphae'] = { pos = 201, section = 16 }, ['Stripped Warped Stem'] = { pos = 176, section = 16 }, Strontium = { pos = 1870, section = 34 }, ['Structure Block'] = { pos = 1380, section = 26 }, ['Structure Void'] = { pos = 3614, section = 26 }, ['Structure Void BE'] = { pos = 60, section = 26 }, ['Studded Boots'] = { pos = 2172, section = 30 }, ['Studded Chestplate'] = { pos = 2173, section = 30 }, ['Studded Helmet'] = { pos = 2174, section = 30 }, ['Studded Leggings'] = { pos = 2175, section = 30 }, Sugar = { pos = 3219, section = 10 }, ['Sugar Cane'] = { pos = 548, section = 19 }, ['Sugar Cane Revision 2'] = { pos = 3445, section = 29 }, Sulfate = { pos = 1915, section = 37 }, Sulfur = { pos = 1871, section = 34 }, Sunflower = { pos = 3446, section = 19 }, ['Super Fertilizer'] = { pos = 1767, section = 33 }, ['Suspicious Gravel'] = { pos = 1210, section = 15 }, ['Suspicious Sand'] = { pos = 1193, section = 15 }, ['Suspicious Stew'] = { pos = 2398, section = 10 }, ['Swaggiest stairs ever'] = { pos = 486, section = 32 }, ['Swamp Explorer Map'] = { pos = 1326, section = 25 }, ['Swamp Explorer Map BE'] = { pos = 1327, section = 25 }, ['Sweet Berries'] = { pos = 2457, section = 10 }, ['Tadpole Spawn Egg'] = { pos = 576, section = 24 }, Tag = { pos = 1293, section = 32 }, ['Taiga Village Map'] = { pos = 1326, section = 25 }, ['Taiga Village Map BE'] = { pos = 1327, section = 25 }, ['Tall Grass'] = { pos = 3447, section = 19 }, Tantalum = { pos = 1872, section = 34 }, Target = { pos = 196, section = 13 }, Technetium = { pos = 1873, section = 34 }, Tellurium = { pos = 1874, section = 34 }, Tennessine = { pos = 1875, section = 34 }, Terbium = { pos = 1876, section = 34 }, Terracotta = { pos = 3381, section = 15 }, Thallium = { pos = 1877, section = 34 }, ['Thick Lingering Potion'] = { pos = 1097, section = 31 }, ['Thick Potion'] = { pos = 1083, section = 21 }, ['Thick Potion Revision 1'] = { pos = 309, section = 45 }, ['Thick Splash Potion'] = { pos = 1100, section = 22 }, Thorium = { pos = 1878, section = 34 }, Thulium = { pos = 1879, section = 34 }, ['Tide Armor Trim'] = { pos = 823, section = 41 }, ['Tide Armor Trim Smithing Template'] = { pos = 823, section = 41 }, ['tile.info_update.name'] = { pos = 357, section = 30 }, Tin = { pos = 1869, section = 34 }, ['Tinted Glass'] = { pos = 431, section = 12 }, ['Tipped Arrow'] = { pos = 1266, section = 28 }, Titanium = { pos = 1880, section = 34 }, TNT = { pos = 3615, section = 26 }, Tonic = { pos = 1768, section = 33 }, ['Top Snow'] = { pos = 999, section = 15 }, Torch = { pos = 3390, section = 17 }, ['Torch Revision 1'] = { pos = 2092, section = 29 }, Torchflower = { pos = 1199, section = 19 }, ['Torchflower Seeds'] = { pos = 1200, section = 19 }, ['Totem of Undying'] = { pos = 3641, section = 28 }, ['Trader Llama Spawn Egg'] = { pos = 2462, section = 24 }, ['Transition metal'] = { pos = 75, section = 34 }, ['Trapped Chest'] = { pos = 3616, section = 26 }, ['Trapped Chest BE'] = { pos = 59, section = 26 }, ['Treasure Map'] = { pos = 123, section = 25 }, Trident = { pos = 1716, section = 28 }, ['Trident Revision 1'] = { pos = 1680, section = 29 }, ['Tripwire Hook'] = { pos = 3354, section = 13 }, ['Tropical Fish'] = { pos = 1689, section = 10 }, ['Tropical Fish Bucket Revision 1'] = { pos = 1685, section = 29 }, ['Tropical Fish Spawn Egg'] = { pos = 1722, section = 24 }, ['Tropical Fish Spawn Egg Revision 1'] = { pos = 1971, section = 39 }, ['Tube Coral'] = { pos = 1711, section = 15 }, ['Tube Coral Block'] = { pos = 1706, section = 15 }, ['Tube Coral Block Revision 1'] = { pos = 1700, section = 29 }, ['Tube Coral Fan'] = { pos = 2135, section = 15 }, ['Tube Coral Fan Revision 1'] = { pos = 1695, section = 29 }, ['Tube Coral Fan Revision 2'] = { pos = 2143, section = 29 }, Tuff = { pos = 433, section = 15 }, Tungsten = { pos = 1881, section = 34 }, ['Tungsten Chloride'] = { pos = 1917, section = 37 }, ['Turtle Egg'] = { pos = 1972, section = 5 }, ['Turtle Egg Revision 1'] = { pos = 1668, section = 29 }, ['Turtle Helmet'] = { pos = 1681, section = 1 }, ['Turtle Shell'] = { pos = 1681, section = 1 }, ['Turtle Spawn Egg'] = { pos = 1729, section = 24 }, ['Twisting Vines'] = { pos = 203, section = 16 }, ['Ultramarine Cloth'] = { pos = 228, section = 40 }, ['Uncraftable Lingering Potion'] = { pos = 3500, section = 31 }, ['Uncraftable Potion'] = { pos = 1403, section = 21 }, ['Uncraftable Potion Revision 1'] = { pos = 310, section = 45 }, ['Uncraftable Splash Potion'] = { pos = 3483, section = 22 }, ['Uncraftable Tipped Arrow'] = { pos = 1409, section = 28 }, ['Underwater TNT'] = { pos = 1946, section = 33 }, ['Underwater Torch'] = { pos = 1769, section = 33 }, Uranium = { pos = 1882, section = 34 }, ['USB Charger'] = { pos = 1640, section = 32 }, ['USB Charger Block'] = { pos = 1640, section = 32 }, Vanadium = { pos = 1883, section = 34 }, ['Verdant Froglight'] = { pos = 584, section = 12 }, ['Verdant Froglight BE'] = { pos = 580, section = 12 }, ['Very Damaged Anvil'] = { pos = 1257, section = 26 }, ['Vex Armor Trim'] = { pos = 824, section = 41 }, ['Vex Armor Trim Smithing Template'] = { pos = 824, section = 41 }, ['Vex Spawn Egg'] = { pos = 1413, section = 24 }, ['Village Map'] = { pos = 1326, section = 25 }, ['Village Map BE'] = { pos = 1327, section = 25 }, ['Villager Spawn Egg'] = { pos = 1165, section = 24 }, ['Villager Spawn Egg Revision 1'] = { pos = 1398, section = 39 }, ['Vindicator Spawn Egg'] = { pos = 1414, section = 24 }, Vines = { pos = 3448, section = 19 }, ['Violet Cloth'] = { pos = 238, section = 40 }, ['Void Air'] = { pos = 2363, section = 15 }, ['Wandering Trader Spawn Egg'] = { pos = 2463, section = 24 }, ['Ward Armor Trim'] = { pos = 826, section = 41 }, ['Ward Armor Trim Smithing Template'] = { pos = 826, section = 41 }, ['Warden Spawn Egg'] = { pos = 581, section = 24 }, ['Warped Button'] = { pos = 171, section = 13 }, ['Warped Door'] = { pos = 172, section = 13 }, ['Warped Fence'] = { pos = 649, section = 12 }, ['Warped Fence BE'] = { pos = 164, section = 12 }, ['Warped Fence Gate'] = { pos = 180, section = 13 }, ['Warped Fence Gate BE'] = { pos = 383, section = 13 }, ['Warped Fungus'] = { pos = 159, section = 16 }, ['Warped Fungus on a Stick'] = { pos = 224, section = 25 }, ['Warped Hanging Sign'] = { pos = 661, section = 5 }, ['Warped Hyphae'] = { pos = 199, section = 16 }, ['Warped Nylium'] = { pos = 153, section = 16 }, ['Warped Planks'] = { pos = 147, section = 12 }, ['Warped Pressure Plate'] = { pos = 173, section = 13 }, ['Warped Roots'] = { pos = 192, section = 16 }, ['Warped Sign'] = { pos = 178, section = 17 }, ['Warped Slab'] = { pos = 165, section = 12 }, ['Warped Stairs'] = { pos = 166, section = 12 }, ['Warped Stem'] = { pos = 154, section = 16 }, ['Warped Trapdoor'] = { pos = 174, section = 13 }, ['Warped Wart Block'] = { pos = 155, section = 16 }, Water = { pos = 2127, section = 11 }, ['Water (compound)'] = { pos = 1892, section = 35 }, ['Water BE'] = { pos = 2128, section = 11 }, ['Water Block'] = { pos = 2118, section = 29 }, ['Water Bottle'] = { pos = 1083, section = 21 }, ['Water Bottle Revision 1'] = { pos = 311, section = 45 }, ['Water Bucket'] = { pos = 3149, section = 4 }, ['Water Revision 2'] = { pos = 851, section = 29 }, ['Wax Block'] = { pos = 96, section = 30 }, ['Waxed Block of Copper'] = { pos = 401, section = 12 }, ['Waxed Copper'] = { pos = 401, section = 12 }, ['Waxed Copper Block'] = { pos = 401, section = 12 }, ['Waxed Cut Copper'] = { pos = 402, section = 12 }, ['Waxed Cut Copper Block'] = { pos = 402, section = 12 }, ['Waxed Cut Copper Slab'] = { pos = 403, section = 12 }, ['Waxed Cut Copper Stairs'] = { pos = 404, section = 12 }, ['Waxed Exposed Copper'] = { pos = 411, section = 12 }, ['Waxed Exposed Copper Block'] = { pos = 411, section = 12 }, ['Waxed Exposed Cut Copper'] = { pos = 412, section = 12 }, ['Waxed Exposed Cut Copper Block'] = { pos = 412, section = 12 }, ['Waxed Exposed Cut Copper Slab'] = { pos = 413, section = 12 }, ['Waxed Exposed Cut Copper Stairs'] = { pos = 414, section = 12 }, ['Waxed Oxidized Copper'] = { pos = 441, section = 12 }, ['Waxed Oxidized Copper Block'] = { pos = 441, section = 12 }, ['Waxed Oxidized Cut Copper'] = { pos = 442, section = 12 }, ['Waxed Oxidized Cut Copper Block'] = { pos = 442, section = 12 }, ['Waxed Oxidized Cut Copper Slab'] = { pos = 443, section = 12 }, ['Waxed Oxidized Cut Copper Stairs'] = { pos = 444, section = 12 }, ['Waxed Weathered Copper'] = { pos = 424, section = 12 }, ['Waxed Weathered Copper Block'] = { pos = 424, section = 12 }, ['Waxed Weathered Cut Copper'] = { pos = 425, section = 12 }, ['Waxed Weathered Cut Copper Block'] = { pos = 425, section = 12 }, ['Waxed Weathered Cut Copper Slab'] = { pos = 423, section = 12 }, ['Waxed Weathered Cut Copper Stairs'] = { pos = 426, section = 12 }, ['Wayfinder Armor Trim'] = { pos = 1218, section = 41 }, ['Wayfinder Armor Trim Smithing Template'] = { pos = 1218, section = 41 }, ['Weathered Copper'] = { pos = 424, section = 12 }, ['Weathered Copper Block'] = { pos = 424, section = 12 }, ['Weathered Cut Copper'] = { pos = 425, section = 12 }, ['Weathered Cut Copper Block'] = { pos = 425, section = 12 }, ['Weathered Cut Copper Slab'] = { pos = 423, section = 12 }, ['Weathered Cut Copper Stairs'] = { pos = 426, section = 12 }, ['Weeping Vines'] = { pos = 160, section = 16 }, ['Wet Sponge'] = { pos = 3617, section = 26 }, Wheat = { pos = 3220, section = 10 }, ['Wheat Seeds'] = { pos = 1067, section = 19 }, ['White Balloon'] = { pos = 1947, section = 33 }, ['White Banner'] = { pos = 788, section = 7 }, ['White Banner 15w14a'] = { pos = 487, section = 32 }, ['White Base Banner'] = { pos = 3062, section = 2 }, ['White Base Dexter Canton Banner'] = { pos = 3063, section = 2 }, ['White Base Gradient Banner'] = { pos = 3064, section = 2 }, ['White Base Indented Banner'] = { pos = 3065, section = 2 }, ['White Base Sinister Canton Banner'] = { pos = 3066, section = 2 }, ['White Beaker'] = { pos = 1897, section = 35 }, ['White Bed'] = { pos = 3185, section = 7 }, ['White Bed BE'] = { pos = 1559, section = 7 }, ['White Bed LCE'] = { pos = 1559, section = 7 }, ['White Bend Banner'] = { pos = 3067, section = 2 }, ['White Bend Sinister Banner'] = { pos = 3068, section = 2 }, ['White Bordure Banner'] = { pos = 3069, section = 2 }, ['White Bordure Indented Banner'] = { pos = 3070, section = 2 }, ['White Candle'] = { pos = 437, section = 7 }, ['White Carpet'] = { pos = 1635, section = 7 }, ['White Carpet Revision 1'] = { pos = 789, section = 40 }, ['White Chevron Banner'] = { pos = 3071, section = 2 }, ['White Chief Banner'] = { pos = 3072, section = 2 }, ['White Chief Dexter Canton Banner'] = { pos = 3073, section = 2 }, ['White Chief Indented Banner'] = { pos = 3074, section = 2 }, ['White Chief Sinister Canton Banner'] = { pos = 3075, section = 2 }, ['White Cloth'] = { pos = 242, section = 40 }, ['White Concrete'] = { pos = 1517, section = 7 }, ['White Concrete Powder'] = { pos = 1518, section = 7 }, ['White Creeper Charge Banner'] = { pos = 3076, section = 2 }, ['White Cross Banner'] = { pos = 3077, section = 2 }, ['White Dye'] = { pos = 2378, section = 6 }, ['White Fess Banner'] = { pos = 3078, section = 2 }, ['White Field Masoned Banner'] = { pos = 3079, section = 2 }, ['White Firework Star'] = { pos = 820, section = 9 }, ['White Flask'] = { pos = 1907, section = 36 }, ['White Flower Charge Banner'] = { pos = 3080, section = 2 }, ['White Glazed Terracotta'] = { pos = 1543, section = 7 }, ['White Glazed Terracotta Revision 1'] = { pos = 1519, section = 40 }, ['White Globe Banner'] = { pos = 50, section = 2 }, ['White Glow Stick'] = { pos = 2006, section = 33 }, ['White Gradient Banner'] = { pos = 3081, section = 2 }, ['White Inverted Chevron Banner'] = { pos = 3082, section = 2 }, ['White Jar'] = { pos = 1915, section = 37 }, ['White Lozenge Banner'] = { pos = 3083, section = 2 }, ['White Pale Banner'] = { pos = 3084, section = 2 }, ['White Pale Dexter Banner'] = { pos = 3085, section = 2 }, ['White Pale Sinister Banner'] = { pos = 3086, section = 2 }, ['White Paly Banner'] = { pos = 3087, section = 2 }, ['White Per Bend Banner'] = { pos = 3088, section = 2 }, ['White Per Bend Inverted Banner'] = { pos = 3089, section = 2 }, ['White Per Bend Sinister Banner'] = { pos = 3090, section = 2 }, ['White Per Bend Sinister Inverted Banner'] = { pos = 3091, section = 2 }, ['White Per Fess Banner'] = { pos = 3092, section = 2 }, ['White Per Fess Inverted Banner'] = { pos = 3093, section = 2 }, ['White Per Pale Banner'] = { pos = 3094, section = 2 }, ['White Per Pale Inverted Banner'] = { pos = 3095, section = 2 }, ['White Piglin Banner'] = { pos = 373, section = 2 }, ['White Roundel Banner'] = { pos = 3096, section = 2 }, ['White Saltire Banner'] = { pos = 3097, section = 2 }, ['White Shield'] = { pos = 2528, section = 1 }, ['White Shulker Box'] = { pos = 1617, section = 7 }, ['White Shulker Box Revision 1'] = { pos = 1430, section = 40 }, ['White Skull Charge Banner'] = { pos = 3098, section = 2 }, ['White Snout Banner'] = { pos = 373, section = 2 }, ['White Stained Glass'] = { pos = 791, section = 7 }, ['White Stained Glass Pane'] = { pos = 792, section = 7 }, ['White Stained Glass Pane BE'] = { pos = 2022, section = 7 }, ['White Terracotta'] = { pos = 790, section = 7 }, ['White Thing Banner'] = { pos = 3099, section = 2 }, ['White Tinted Glass'] = { pos = 1314, section = 40 }, ['White Tinted Glass Pane'] = { pos = 17, section = 40 }, ['White Tulip'] = { pos = 3449, section = 19 }, ['White Wood Planks'] = { pos = 258, section = 30 }, ['White Wool'] = { pos = 1537, section = 7 }, ['White Wool Revision 2'] = { pos = 793, section = 40 }, ['Wild Armor Trim'] = { pos = 828, section = 41 }, ['Wild Armor Trim Smithing Template'] = { pos = 828, section = 41 }, ['Witch Spawn Egg'] = { pos = 1166, section = 24 }, ['Wither Rose'] = { pos = 2388, section = 19 }, ['Wither Skeleton Skull'] = { pos = 968, section = 14 }, ['Wither Skeleton Skull BE'] = { pos = 219, section = 14 }, ['Wither Skeleton Spawn Egg'] = { pos = 1378, section = 24 }, ['Wither Spawn Egg'] = { pos = 698, section = 24 }, Wob = { pos = 1323, section = 32 }, ['Wolf Spawn Egg'] = { pos = 1167, section = 24 }, ['Wolf Spawn Egg Revision 1'] = { pos = 1399, section = 39 }, Wolfram = { pos = 1881, section = 34 }, ['Wood Heart'] = { pos = 122, section = 32 }, ['Wooden Axe'] = { pos = 3588, section = 25 }, ['Wooden Hoe'] = { pos = 3589, section = 25 }, ['Wooden Pickaxe'] = { pos = 3590, section = 25 }, ['Wooden Shovel'] = { pos = 3591, section = 25 }, ['Wooden Slab'] = { pos = 904, section = 12 }, ['Wooden Sword'] = { pos = 3642, section = 28 }, ['Woodland Explorer Map'] = { pos = 3592, section = 25 }, ['Woodland Explorer Map BE'] = { pos = 126, section = 25 }, ['Written Book'] = { pos = 3593, section = 25 }, Xenon = { pos = 1884, section = 34 }, ['Yellow Balloon'] = { pos = 1948, section = 33 }, ['Yellow Banner'] = { pos = 794, section = 7 }, ['Yellow Banner 15w14a'] = { pos = 488, section = 32 }, ['Yellow Base Banner'] = { pos = 3100, section = 2 }, ['Yellow Base Dexter Canton Banner'] = { pos = 3101, section = 2 }, ['Yellow Base Gradient Banner'] = { pos = 3102, section = 2 }, ['Yellow Base Indented Banner'] = { pos = 3103, section = 2 }, ['Yellow Base Sinister Canton Banner'] = { pos = 3104, section = 2 }, ['Yellow Beaker'] = { pos = 1890, section = 35 }, ['Yellow Bed'] = { pos = 3186, section = 7 }, ['Yellow Bed BE'] = { pos = 1560, section = 7 }, ['Yellow Bed LCE'] = { pos = 1560, section = 7 }, ['Yellow Bend Banner'] = { pos = 3105, section = 2 }, ['Yellow Bend Sinister Banner'] = { pos = 3106, section = 2 }, ['Yellow Bordure Banner'] = { pos = 3107, section = 2 }, ['Yellow Bordure Indented Banner'] = { pos = 3108, section = 2 }, ['Yellow Candle'] = { pos = 438, section = 7 }, ['Yellow Carpet'] = { pos = 1636, section = 7 }, ['Yellow Carpet Revision 1'] = { pos = 795, section = 40 }, ['Yellow Chevron Banner'] = { pos = 3109, section = 2 }, ['Yellow Chief Banner'] = { pos = 3110, section = 2 }, ['Yellow Chief Dexter Canton Banner'] = { pos = 3111, section = 2 }, ['Yellow Chief Indented Banner'] = { pos = 3112, section = 2 }, ['Yellow Chief Sinister Canton Banner'] = { pos = 3113, section = 2 }, ['Yellow Cloth'] = { pos = 243, section = 40 }, ['Yellow Concrete'] = { pos = 1520, section = 7 }, ['Yellow Concrete Powder'] = { pos = 1521, section = 7 }, ['Yellow Creeper Charge Banner'] = { pos = 3114, section = 2 }, ['Yellow Cross Banner'] = { pos = 3115, section = 2 }, ['Yellow Dye'] = { pos = 3170, section = 6 }, ['Yellow Fess Banner'] = { pos = 3116, section = 2 }, ['Yellow Field Masoned Banner'] = { pos = 3117, section = 2 }, ['Yellow Firework Star'] = { pos = 821, section = 9 }, ['Yellow Flask'] = { pos = 1914, section = 36 }, ['Yellow Flower Charge Banner'] = { pos = 3118, section = 2 }, ['Yellow Glazed Terracotta'] = { pos = 1522, section = 7 }, ['Yellow Globe Banner'] = { pos = 51, section = 2 }, ['Yellow Glow Stick'] = { pos = 2007, section = 33 }, ['Yellow Gradient Banner'] = { pos = 3119, section = 2 }, ['Yellow Inverted Chevron Banner'] = { pos = 3120, section = 2 }, ['Yellow Jar'] = { pos = 1924, section = 37 }, ['Yellow Key'] = { pos = 453, section = 32 }, ['Yellow Lozenge Banner'] = { pos = 3121, section = 2 }, ['Yellow Pale Banner'] = { pos = 3122, section = 2 }, ['Yellow Pale Dexter Banner'] = { pos = 3123, section = 2 }, ['Yellow Pale Sinister Banner'] = { pos = 3124, section = 2 }, ['Yellow Paly Banner'] = { pos = 3125, section = 2 }, ['Yellow Per Bend Banner'] = { pos = 3126, section = 2 }, ['Yellow Per Bend Inverted Banner'] = { pos = 3127, section = 2 }, ['Yellow Per Bend Sinister Banner'] = { pos = 3128, section = 2 }, ['Yellow Per Bend Sinister Inverted Banner'] = { pos = 3129, section = 2 }, ['Yellow Per Fess Banner'] = { pos = 3130, section = 2 }, ['Yellow Per Fess Inverted Banner'] = { pos = 3131, section = 2 }, ['Yellow Per Pale Banner'] = { pos = 3132, section = 2 }, ['Yellow Per Pale Inverted Banner'] = { pos = 3133, section = 2 }, ['Yellow Piglin Banner'] = { pos = 374, section = 2 }, ['Yellow Roundel Banner'] = { pos = 3134, section = 2 }, ['Yellow Saltire Banner'] = { pos = 3135, section = 2 }, ['Yellow Shield'] = { pos = 2529, section = 1 }, ['Yellow Shulker Box'] = { pos = 1618, section = 7 }, ['Yellow Shulker Box Revision 1'] = { pos = 1431, section = 40 }, ['Yellow Skull Charge Banner'] = { pos = 3136, section = 2 }, ['Yellow Snout Banner'] = { pos = 374, section = 2 }, ['Yellow Stained Glass'] = { pos = 797, section = 7 }, ['Yellow Stained Glass Pane'] = { pos = 798, section = 7 }, ['Yellow Stained Glass Pane BE'] = { pos = 2023, section = 7 }, ['Yellow Terracotta'] = { pos = 796, section = 7 }, ['Yellow Thing Banner'] = { pos = 3137, section = 2 }, ['Yellow Tinted Glass'] = { pos = 1315, section = 40 }, ['Yellow Tinted Glass Pane'] = { pos = 18, section = 40 }, ['Yellow Wood Planks'] = { pos = 259, section = 30 }, ['Yellow Wool'] = { pos = 1538, section = 7 }, ['Yellow Wool Revision 2'] = { pos = 799, section = 40 }, Ytterbium = { pos = 1885, section = 34 }, Yttrium = { pos = 1886, section = 34 }, Zinc = { pos = 1887, section = 34 }, Zirconium = { pos = 1888, section = 34 }, ['Zoglin Spawn Egg'] = { pos = 268, section = 24 }, ['Zombie Head'] = { pos = 969, section = 14 }, ['Zombie Head BE'] = { pos = 220, section = 14 }, ['Zombie Horse Spawn Egg'] = { pos = 1379, section = 24 }, ['Zombie Horse Spawn Egg Revision 1'] = { pos = 1591, section = 39 }, ['Zombie Pigman Spawn Egg'] = { pos = 1169, section = 24 }, ['Zombie Pigman Spawn Egg Revision 1'] = { pos = 1401, section = 39 }, ['Zombie Spawn Egg'] = { pos = 1168, section = 24 }, ['Zombie Spawn Egg Revision 1'] = { pos = 1400, section = 39 }, ['Zombie Villager Spawn Egg'] = { pos = 1349, section = 24 }, ['Zombified Piglin Spawn Egg'] = { pos = 1169, section = 24 }, }, } 4fd26904905841e4ed525aa345660eb329072176 172 171 2024-05-07T22:33:29Z Axxyyy 2 Scribunto text/plain return { settings = { align = 'middle', classname = 'inv-sprite', image = 'InvSprite.png', sheetsize = 1024, size = 32, stylesheet = true, }, sections = { { name = 'Armor', id = 1 }, { name = 'Banner', id = 2 }, { name = 'Brewing ingredient', id = 3 }, { name = 'Bucket', id = 4 }, { name = 'Decoration', id = 5 }, { name = 'Dye', id = 6 }, { name = 'Dyed', id = 7 }, { name = 'End', id = 8 }, { name = 'Firework', id = 9 }, { name = 'Food', id = 10 }, { name = 'Liquid', id = 11 }, { name = 'Manufactured', id = 12 }, { name = 'Mechanism', id = 13 }, { name = 'Mob head', id = 14 }, { name = 'Natural', id = 15 }, { name = 'Nether', id = 16 }, { name = 'Non-solid', id = 17 }, { name = 'Ore', id = 18 }, { name = 'Plant', id = 19 }, { name = 'Smithing Template', id = 41 }, { name = 'Pottery Sherd', id = 44 }, { name = 'Bedrock Edition & Education Edition', id = 20 }, { name = 'Chemistry Miscellaneous', id = 33 }, { name = 'Element', id = 34 }, { name = 'Beaker', id = 35 }, { name = 'Flask', id = 36 }, { name = 'Jar', id = 37 }, { name = 'Potion', id = 21 }, { name = 'Splash potion', id = 22 }, { name = 'Lingering potion', id = 31 }, { name = 'Raw material', id = 23 }, { name = 'Spawn egg', id = 24 }, { name = 'Tool', id = 25 }, { name = 'Trimmed Armor', id = 43 }, { name = 'Utility', id = 26 }, { name = 'Vehicle', id = 27 }, { name = 'Weapon', id = 28 }, { name = 'Legacy: Potion', id = 45 }, { name = 'Legacy: Lingering Potion', id = 46 }, { name = 'Legacy: Splash Potion', id = 47 }, { name = 'Legacy: Spawn Eggs', id = 39 }, { name = 'Legacy: Dyed', id = 40 }, { name = 'Legacy: before 15w31a stair flip', id = 42 }, { name = 'Legacy: Miscellaneous', id = 29 }, { name = 'April Fools', id = 32 }, { name = 'Other', id = 30 }, { name = 'Minecraft Earth', id = 38 }, }, ids = { ['3D'] = { pos = 446, section = 32 }, ['???'] = { pos = 1770, section = 34 }, ['A Very Fine Item'] = { pos = 263, section = 32 }, ['Acacia Boat'] = { pos = 637, section = 27 }, ['Acacia Boat Revision 2'] = { pos = 3618, section = 29 }, ['Acacia Boat with Chest'] = { pos = 610, section = 27 }, ['Acacia Button'] = { pos = 3326, section = 13 }, ['Acacia Door'] = { pos = 566, section = 13 }, ['Acacia Door Revision 3'] = { pos = 935, section = 13 }, ['Acacia Fence'] = { pos = 645, section = 12 }, ['Acacia Fence BE'] = { pos = 3222, section = 12 }, ['Acacia Fence Gate'] = { pos = 3221, section = 13 }, ['Acacia Fence Gate BE'] = { pos = 52, section = 13 }, ['Acacia Hanging Sign'] = { pos = 261, section = 5 }, ['Acacia Leaves'] = { pos = 3398, section = 19 }, ['Acacia Log'] = { pos = 3399, section = 19 }, ['Acacia Planks'] = { pos = 854, section = 12 }, ['Acacia Pressure Plate'] = { pos = 3327, section = 13 }, ['Acacia Sapling'] = { pos = 3400, section = 19 }, ['Acacia Sign'] = { pos = 2396, section = 17 }, ['Acacia Slab'] = { pos = 3223, section = 12 }, ['Acacia Stairs'] = { pos = 3224, section = 12 }, ['Acacia Trapdoor'] = { pos = 1650, section = 13 }, ['Acacia Wood'] = { pos = 3225, section = 12 }, ['Acacia Wood Button'] = { pos = 3326, section = 13 }, ['Acacia Wood Door'] = { pos = 566, section = 13 }, ['Acacia Wood Fence'] = { pos = 645, section = 12 }, ['Acacia Wood Fence Gate'] = { pos = 3221, section = 13 }, ['Acacia Wood Planks'] = { pos = 854, section = 12 }, ['Acacia Wood Pressure Plate'] = { pos = 3327, section = 13 }, ['Acacia Wood Sign'] = { pos = 2396, section = 17 }, ['Acacia Wood Slab'] = { pos = 3223, section = 12 }, ['Acacia Wood Stairs'] = { pos = 3224, section = 12 }, ['Acacia Wood Trapdoor'] = { pos = 1650, section = 13 }, Actinide = { pos = 66, section = 34 }, Actinium = { pos = 1771, section = 34 }, ['Activator Rail'] = { pos = 3328, section = 13 }, ['Adult Carrots'] = { pos = 2138, section = 19 }, ['Adult Nether Warts'] = { pos = 2170, section = 16 }, ['Adult Potatoes'] = { pos = 2142, section = 19 }, ['Adult Wheat Crops'] = { pos = 2144, section = 19 }, Air = { pos = 2363, section = 15 }, ['Alkali metal'] = { pos = 67, section = 34 }, ['Alkaline earth metal'] = { pos = 68, section = 34 }, ['Allay Spawn Egg'] = { pos = 901, section = 24 }, Allium = { pos = 3401, section = 19 }, Allow = { pos = 1435, section = 20 }, Aluminium = { pos = 1772, section = 34 }, Aluminum = { pos = 1772, section = 34 }, ['Aluminum Oxide'] = { pos = 1918, section = 37 }, Americium = { pos = 1773, section = 34 }, ['Amethyst Cluster'] = { pos = 393, section = 15 }, ['Amethyst Shard'] = { pos = 394, section = 23 }, ['Amethyst Trim Chainmail Boots'] = { pos = 829, section = 43 }, ['Amethyst Trim Chainmail Chestplate'] = { pos = 830, section = 43 }, ['Amethyst Trim Chainmail Helmet'] = { pos = 832, section = 43 }, ['Amethyst Trim Chainmail Leggings'] = { pos = 833, section = 43 }, ['Amethyst Trim Diamond Boots'] = { pos = 834, section = 43 }, ['Amethyst Trim Diamond Chestplate'] = { pos = 835, section = 43 }, ['Amethyst Trim Diamond Helmet'] = { pos = 836, section = 43 }, ['Amethyst Trim Diamond Leggings'] = { pos = 838, section = 43 }, ['Amethyst Trim Golden Boots'] = { pos = 839, section = 43 }, ['Amethyst Trim Golden Chestplate'] = { pos = 840, section = 43 }, ['Amethyst Trim Golden Helmet'] = { pos = 841, section = 43 }, ['Amethyst Trim Golden Leggings'] = { pos = 843, section = 43 }, ['Amethyst Trim Iron Boots'] = { pos = 844, section = 43 }, ['Amethyst Trim Iron Chestplate'] = { pos = 845, section = 43 }, ['Amethyst Trim Iron Helmet'] = { pos = 847, section = 43 }, ['Amethyst Trim Iron Leggings'] = { pos = 849, section = 43 }, ['Amethyst Trim Leather Boots'] = { pos = 850, section = 43 }, ['Amethyst Trim Leather Cap'] = { pos = 852, section = 43 }, ['Amethyst Trim Leather Pants'] = { pos = 853, section = 43 }, ['Amethyst Trim Leather Tunic'] = { pos = 855, section = 43 }, ['Amethyst Trim Netherite Boots'] = { pos = 856, section = 43 }, ['Amethyst Trim Netherite Chestplate'] = { pos = 857, section = 43 }, ['Amethyst Trim Netherite Helmet'] = { pos = 858, section = 43 }, ['Amethyst Trim Netherite Leggings'] = { pos = 860, section = 43 }, ['Amethyst Trim Turtle Shell'] = { pos = 861, section = 43 }, Ammonia = { pos = 1889, section = 35 }, ['Ancient Debris'] = { pos = 134, section = 16 }, Andesite = { pos = 3355, section = 15 }, ['Andesite Slab'] = { pos = 3226, section = 12 }, ['Andesite Stairs'] = { pos = 3227, section = 12 }, ['Andesite Wall'] = { pos = 3228, section = 12 }, ['Andesite Wall BE'] = { pos = 21, section = 12 }, ['Angler Pottery Sherd'] = { pos = 1220, section = 44 }, ['Ankle Monitor'] = { pos = 1637, section = 32 }, Ant = { pos = 264, section = 32 }, Antidote = { pos = 1744, section = 33 }, Antimony = { pos = 1774, section = 34 }, Anvil = { pos = 3594, section = 26 }, Apple = { pos = 3193, section = 10 }, ['Apple Revision 1'] = { pos = 2034, section = 29 }, ['Archer Pottery Sherd'] = { pos = 1201, section = 44 }, Argentum = { pos = 1775, section = 34 }, Argon = { pos = 1776, section = 34 }, ['Armor Stand'] = { pos = 3150, section = 5 }, ['Arms Up Pottery Sherd'] = { pos = 1202, section = 44 }, Arrow = { pos = 1267, section = 28 }, ['Arrow 15w14a'] = { pos = 117, section = 32 }, ['Arrow Loaded Crossbow'] = { pos = 2383, section = 28 }, ['Arrow of Big'] = { pos = 1237, section = 32 }, ['Arrow of Decay'] = { pos = 1408, section = 28 }, ['Arrow of Decay Revision 1'] = { pos = 1562, section = 29 }, ['Arrow of Fire Resistance'] = { pos = 1268, section = 28 }, ['Arrow of Harming'] = { pos = 1269, section = 28 }, ['Arrow of Healing'] = { pos = 1270, section = 28 }, ['Arrow of Invisibility'] = { pos = 1271, section = 28 }, ['Arrow of Leaping'] = { pos = 1272, section = 28 }, ['Arrow of Luck'] = { pos = 1362, section = 28 }, ['Arrow of Night Vision'] = { pos = 1273, section = 28 }, ['Arrow of Poison'] = { pos = 1274, section = 28 }, ['Arrow of Regeneration'] = { pos = 1275, section = 28 }, ['Arrow of Slow Falling'] = { pos = 1734, section = 28 }, ['Arrow of Slowness'] = { pos = 1276, section = 28 }, ['Arrow of Small'] = { pos = 1238, section = 32 }, ['Arrow of Splashing'] = { pos = 1266, section = 28 }, ['Arrow of Strength'] = { pos = 1277, section = 28 }, ['Arrow of Swiftness'] = { pos = 1278, section = 28 }, ['Arrow of the Turtle Master'] = { pos = 2030, section = 28 }, ['Arrow of Water Breathing'] = { pos = 133, section = 28 }, ['Arrow of Weakness'] = { pos = 1279, section = 28 }, Arsenic = { pos = 1777, section = 34 }, Astatine = { pos = 1778, section = 34 }, Aurum = { pos = 1779, section = 34 }, ['Awkward Lingering Potion'] = { pos = 1097, section = 31 }, ['Awkward Potion'] = { pos = 1083, section = 21 }, ['Awkward Potion Revision 1'] = { pos = 292, section = 45 }, ['Awkward Splash Potion'] = { pos = 1100, section = 22 }, ['Axolotl Spawn Egg'] = { pos = 440, section = 24 }, Azalea = { pos = 464, section = 19 }, ['Azalea Leaves'] = { pos = 465, section = 19 }, ['Azure Bluet'] = { pos = 3402, section = 19 }, ['Baked Potato'] = { pos = 3194, section = 10 }, ['Baked Potato Revision 1'] = { pos = 2069, section = 29 }, Bamboo = { pos = 2373, section = 19 }, ['Bamboo Button'] = { pos = 670, section = 13 }, ['Bamboo Door'] = { pos = 671, section = 13 }, ['Bamboo Fence'] = { pos = 662, section = 12 }, ['Bamboo Fence Gate'] = { pos = 672, section = 13 }, ['Bamboo Hanging Sign'] = { pos = 650, section = 5 }, ['Bamboo Mosaic'] = { pos = 664, section = 12 }, ['Bamboo Mosaic Slab'] = { pos = 665, section = 12 }, ['Bamboo Mosaic Stairs'] = { pos = 666, section = 12 }, ['Bamboo Planks'] = { pos = 667, section = 12 }, ['Bamboo Pressure Plate'] = { pos = 674, section = 13 }, ['Bamboo Raft'] = { pos = 690, section = 27 }, ['Bamboo Raft BE'] = { pos = 693, section = 27 }, ['Bamboo Raft with Chest'] = { pos = 691, section = 27 }, ['Bamboo Raft with Chest BE'] = { pos = 694, section = 27 }, ['Bamboo Sign'] = { pos = 680, section = 17 }, ['Bamboo Slab'] = { pos = 668, section = 12 }, ['Bamboo Stairs'] = { pos = 669, section = 12 }, ['Bamboo Trapdoor'] = { pos = 679, section = 13 }, ['Bamboo Wood Button'] = { pos = 670, section = 13 }, ['Bamboo Wood Door'] = { pos = 671, section = 13 }, ['Bamboo Wood Fence'] = { pos = 662, section = 12 }, ['Bamboo Wood Fence Gate'] = { pos = 672, section = 13 }, ['Bamboo Wood Planks'] = { pos = 667, section = 12 }, ['Bamboo Wood Pressure Plate'] = { pos = 674, section = 13 }, ['Bamboo Wood Sign'] = { pos = 680, section = 17 }, ['Bamboo Wood Slab'] = { pos = 668, section = 12 }, ['Bamboo Wood Stairs'] = { pos = 669, section = 12 }, ['Bamboo Wood Trapdoor'] = { pos = 679, section = 13 }, Banner = { pos = 788, section = 7 }, ['Banner Pattern'] = { pos = 2391, section = 2 }, ['Banner Revision 1'] = { pos = 2042, section = 29 }, Barium = { pos = 1780, section = 34 }, ['Barium Sulfate'] = { pos = 1915, section = 37 }, Barrel = { pos = 2435, section = 26 }, Barrier = { pos = 3595, section = 26 }, Basalt = { pos = 148, section = 16 }, ['Bat Spawn Egg'] = { pos = 1142, section = 24 }, Beacon = { pos = 3596, section = 26 }, ['Beacon BE'] = { pos = 212, section = 26 }, Beaker = { pos = 1889, section = 35 }, Bedrock = { pos = 971, section = 15 }, ['Bee Nest'] = { pos = 64, section = 15 }, ['Bee Spawn Egg'] = { pos = 104, section = 24 }, ['Bee Spawn Egg Revision 1'] = { pos = 65, section = 39 }, Beehive = { pos = 63, section = 12 }, Beetroot = { pos = 3196, section = 10 }, ['Beetroot Seeds'] = { pos = 3403, section = 19 }, ['Beetroot Soup'] = { pos = 3195, section = 10 }, Beetroots = { pos = 2145, section = 19 }, Bell = { pos = 2409, section = 5 }, Benzene = { pos = 1890, section = 35 }, Berkelium = { pos = 1781, section = 34 }, Beryllium = { pos = 1782, section = 34 }, ['Big Dripleaf'] = { pos = 466, section = 19 }, ['Birch Boat'] = { pos = 635, section = 27 }, ['Birch Boat Revision 2'] = { pos = 3619, section = 29 }, ['Birch Boat with Chest'] = { pos = 611, section = 27 }, ['Birch Button'] = { pos = 3329, section = 13 }, ['Birch Door'] = { pos = 567, section = 13 }, ['Birch Door Revision 3'] = { pos = 937, section = 13 }, ['Birch Fence'] = { pos = 643, section = 12 }, ['Birch Fence BE'] = { pos = 3230, section = 12 }, ['Birch Fence Gate'] = { pos = 3229, section = 13 }, ['Birch Fence Gate BE'] = { pos = 53, section = 13 }, ['Birch Hanging Sign'] = { pos = 651, section = 5 }, ['Birch Leaves'] = { pos = 3404, section = 19 }, ['Birch Log'] = { pos = 3405, section = 19 }, ['Birch Log Revision 1'] = { pos = 2238, section = 29 }, ['Birch Planks'] = { pos = 859, section = 12 }, ['Birch Pressure Plate'] = { pos = 3330, section = 13 }, ['Birch Sapling'] = { pos = 3406, section = 19 }, ['Birch Sign'] = { pos = 2393, section = 17 }, ['Birch Slab'] = { pos = 3231, section = 12 }, ['Birch Stairs'] = { pos = 3232, section = 12 }, ['Birch Stairs Left'] = { pos = 2256, section = 42 }, ['Birch Trapdoor'] = { pos = 1648, section = 13 }, ['Birch Wood'] = { pos = 3233, section = 12 }, ['Birch Wood Button'] = { pos = 3329, section = 13 }, ['Birch Wood Door'] = { pos = 567, section = 13 }, ['Birch Wood Fence'] = { pos = 643, section = 12 }, ['Birch Wood Fence Gate'] = { pos = 3229, section = 13 }, ['Birch Wood Planks'] = { pos = 859, section = 12 }, ['Birch Wood Pressure Plate'] = { pos = 3330, section = 13 }, ['Birch Wood Sign'] = { pos = 2393, section = 17 }, ['Birch Wood Slab'] = { pos = 3231, section = 12 }, ['Birch Wood Stairs'] = { pos = 3232, section = 12 }, ['Birch Wood Trapdoor'] = { pos = 1648, section = 13 }, Bismuth = { pos = 1783, section = 34 }, Bit = { pos = 1241, section = 32 }, ['Black Balloon'] = { pos = 1928, section = 33 }, ['Black Banner'] = { pos = 704, section = 7 }, ['Black Banner 15w14a'] = { pos = 472, section = 32 }, ['Black Base Banner'] = { pos = 2530, section = 2 }, ['Black Base Dexter Canton Banner'] = { pos = 2531, section = 2 }, ['Black Base Gradient Banner'] = { pos = 2532, section = 2 }, ['Black Base Indented Banner'] = { pos = 2533, section = 2 }, ['Black Base Sinister Canton Banner'] = { pos = 2534, section = 2 }, ['Black Beaker'] = { pos = 1891, section = 35 }, ['Black Bed'] = { pos = 3171, section = 7 }, ['Black Bed BE'] = { pos = 1235, section = 7 }, ['Black Bed LCE'] = { pos = 1235, section = 7 }, ['Black Bend Banner'] = { pos = 2535, section = 2 }, ['Black Bend Sinister Banner'] = { pos = 2536, section = 2 }, ['Black Bordure Banner'] = { pos = 2537, section = 2 }, ['Black Bordure Indented Banner'] = { pos = 2538, section = 2 }, ['Black Candle'] = { pos = 395, section = 7 }, ['Black Carpet'] = { pos = 1621, section = 7 }, ['Black Carpet Revision 1'] = { pos = 705, section = 40 }, ['Black Chevron Banner'] = { pos = 2539, section = 2 }, ['Black Chief Banner'] = { pos = 2540, section = 2 }, ['Black Chief Dexter Canton Banner'] = { pos = 2541, section = 2 }, ['Black Chief Indented Banner'] = { pos = 2542, section = 2 }, ['Black Chief Sinister Canton Banner'] = { pos = 2543, section = 2 }, ['Black Concrete'] = { pos = 1475, section = 7 }, ['Black Concrete Powder'] = { pos = 1476, section = 7 }, ['Black Creeper Charge Banner'] = { pos = 2544, section = 2 }, ['Black Cross Banner'] = { pos = 2545, section = 2 }, ['Black Dye'] = { pos = 2375, section = 6 }, ['Black Fess Banner'] = { pos = 2546, section = 2 }, ['Black Field Masoned Banner'] = { pos = 2547, section = 2 }, ['Black Firework Star'] = { pos = 804, section = 9 }, ['Black Flask'] = { pos = 1902, section = 36 }, ['Black Flower Charge Banner'] = { pos = 2548, section = 2 }, ['Black Glazed Terracotta'] = { pos = 1477, section = 7 }, ['Black Globe Banner'] = { pos = 35, section = 2 }, ['Black Gradient Banner'] = { pos = 2549, section = 2 }, ['Black Inverted Chevron Banner'] = { pos = 2550, section = 2 }, ['Black Jar'] = { pos = 1916, section = 37 }, ['Black Lozenge Banner'] = { pos = 2551, section = 2 }, ['Black Pale Banner'] = { pos = 2552, section = 2 }, ['Black Pale Dexter Banner'] = { pos = 2553, section = 2 }, ['Black Pale Sinister Banner'] = { pos = 2554, section = 2 }, ['Black Paly Banner'] = { pos = 2555, section = 2 }, ['Black Per Bend Banner'] = { pos = 2556, section = 2 }, ['Black Per Bend Inverted Banner'] = { pos = 2557, section = 2 }, ['Black Per Bend Sinister Banner'] = { pos = 2558, section = 2 }, ['Black Per Bend Sinister Inverted Banner'] = { pos = 2559, section = 2 }, ['Black Per Fess Banner'] = { pos = 2560, section = 2 }, ['Black Per Fess Inverted Banner'] = { pos = 2561, section = 2 }, ['Black Per Pale Banner'] = { pos = 2562, section = 2 }, ['Black Per Pale Inverted Banner'] = { pos = 2563, section = 2 }, ['Black Piglin Banner'] = { pos = 359, section = 2 }, ['Black Roundel Banner'] = { pos = 2564, section = 2 }, ['Black Saltire Banner'] = { pos = 2565, section = 2 }, ['Black Shield'] = { pos = 2469, section = 1 }, ['Black Shulker Box'] = { pos = 1603, section = 7 }, ['Black Shulker Box Revision 1'] = { pos = 1416, section = 40 }, ['Black Skull Charge Banner'] = { pos = 2566, section = 2 }, ['Black Snout Banner'] = { pos = 359, section = 2 }, ['Black Stained Glass'] = { pos = 707, section = 7 }, ['Black Stained Glass Pane'] = { pos = 708, section = 7 }, ['Black Stained Glass Pane BE'] = { pos = 2008, section = 7 }, ['Black Terracotta'] = { pos = 706, section = 7 }, ['Black Thing Banner'] = { pos = 2567, section = 2 }, ['Black Tinted Glass'] = { pos = 1294, section = 40 }, ['Black Tinted Glass Pane'] = { pos = 3, section = 40 }, ['Black Wood Planks'] = { pos = 244, section = 30 }, ['Black Wool'] = { pos = 1523, section = 7 }, ['Black Wool Revision 2'] = { pos = 709, section = 40 }, Blackstone = { pos = 260, section = 16 }, ['Blackstone Slab'] = { pos = 276, section = 12 }, ['Blackstone Stairs'] = { pos = 277, section = 12 }, ['Blackstone Wall'] = { pos = 278, section = 12 }, ['Blackstone Wall BE'] = { pos = 386, section = 12 }, ['Blade Pottery Sherd'] = { pos = 1221, section = 44 }, ['Blank Spawn Egg'] = { pos = 2361, section = 39 }, ['Blast Furnace'] = { pos = 2442, section = 26 }, ['Blaze Powder'] = { pos = 654, section = 3 }, ['Blaze Rod'] = { pos = 655, section = 3 }, ['Blaze Spawn Egg'] = { pos = 1143, section = 24 }, ['Blaze Spawn Egg Revision 1'] = { pos = 1350, section = 39 }, Bleach = { pos = 1745, section = 33 }, ['Bleach (filled)'] = { pos = 1746, section = 33 }, ['Block of Amethyst'] = { pos = 396, section = 15 }, ['Block of Bamboo'] = { pos = 699, section = 12 }, ['Block of Coal'] = { pos = 3234, section = 12 }, ['Block of Coal Revision 1'] = { pos = 1295, section = 29 }, ['Block of Copper'] = { pos = 401, section = 12 }, ['Block of Diamond'] = { pos = 3235, section = 12 }, ['Block of Emerald'] = { pos = 3236, section = 12 }, ['Block of Gold'] = { pos = 3237, section = 12 }, ['Block of Iron'] = { pos = 3238, section = 12 }, ['Block of Lapis Lazuli'] = { pos = 3273, section = 12 }, ['Block of Netherite'] = { pos = 132, section = 12 }, ['Block of Quartz'] = { pos = 3239, section = 12 }, ['Block of Raw Copper'] = { pos = 545, section = 12 }, ['Block of Raw Gold'] = { pos = 546, section = 12 }, ['Block of Raw Iron'] = { pos = 547, section = 12 }, ['Block of Redstone'] = { pos = 3331, section = 13 }, ['Block of Stripped Bamboo'] = { pos = 700, section = 12 }, ['Blue Balloon'] = { pos = 1929, section = 33 }, ['Blue Banner'] = { pos = 710, section = 7 }, ['Blue Banner 15w14a'] = { pos = 473, section = 32 }, ['Blue Base Banner'] = { pos = 2568, section = 2 }, ['Blue Base Dexter Canton Banner'] = { pos = 2569, section = 2 }, ['Blue Base Gradient Banner'] = { pos = 2570, section = 2 }, ['Blue Base Indented Banner'] = { pos = 2571, section = 2 }, ['Blue Base Sinister Canton Banner'] = { pos = 2572, section = 2 }, ['Blue Beaker'] = { pos = 1892, section = 35 }, ['Blue Bed'] = { pos = 3172, section = 7 }, ['Blue Bed BE'] = { pos = 1546, section = 7 }, ['Blue Bed LCE'] = { pos = 1546, section = 7 }, ['Blue Bend Banner'] = { pos = 2573, section = 2 }, ['Blue Bend Sinister Banner'] = { pos = 2574, section = 2 }, ['Blue Bordure Banner'] = { pos = 2575, section = 2 }, ['Blue Bordure Indented Banner'] = { pos = 2576, section = 2 }, ['Blue Candle'] = { pos = 397, section = 7 }, ['Blue Carpet'] = { pos = 1622, section = 7 }, ['Blue Carpet Revision 1'] = { pos = 711, section = 40 }, ['Blue Chevron Banner'] = { pos = 2577, section = 2 }, ['Blue Chief Banner'] = { pos = 2578, section = 2 }, ['Blue Chief Dexter Canton Banner'] = { pos = 2579, section = 2 }, ['Blue Chief Indented Banner'] = { pos = 2580, section = 2 }, ['Blue Chief Sinister Canton Banner'] = { pos = 2581, section = 2 }, ['Blue Concrete'] = { pos = 1478, section = 7 }, ['Blue Concrete Powder'] = { pos = 1479, section = 7 }, ['Blue Creeper Charge Banner'] = { pos = 2582, section = 2 }, ['Blue Cross Banner'] = { pos = 2583, section = 2 }, ['Blue Dye'] = { pos = 2376, section = 6 }, ['Blue Fess Banner'] = { pos = 2584, section = 2 }, ['Blue Field Masoned Banner'] = { pos = 2585, section = 2 }, ['Blue Firework Star'] = { pos = 805, section = 9 }, ['Blue Flask'] = { pos = 1903, section = 36 }, ['Blue Flower Charge Banner'] = { pos = 2586, section = 2 }, ['Blue Glazed Terracotta'] = { pos = 1480, section = 7 }, ['Blue Globe Banner'] = { pos = 36, section = 2 }, ['Blue Glow Stick'] = { pos = 1977, section = 33 }, ['Blue Gradient Banner'] = { pos = 2587, section = 2 }, ['Blue Ice'] = { pos = 1735, section = 15 }, ['Blue Ice BE'] = { pos = 113, section = 15 }, ['Blue Inverted Chevron Banner'] = { pos = 2588, section = 2 }, ['Blue Jar'] = { pos = 1917, section = 37 }, ['Blue Key'] = { pos = 451, section = 32 }, ['Blue Lozenge Banner'] = { pos = 2589, section = 2 }, ['Blue Orchid'] = { pos = 3407, section = 19 }, ['Blue Pale Banner'] = { pos = 2590, section = 2 }, ['Blue Pale Dexter Banner'] = { pos = 2591, section = 2 }, ['Blue Pale Sinister Banner'] = { pos = 2592, section = 2 }, ['Blue Paly Banner'] = { pos = 2593, section = 2 }, ['Blue Per Bend Banner'] = { pos = 2594, section = 2 }, ['Blue Per Bend Inverted Banner'] = { pos = 2595, section = 2 }, ['Blue Per Bend Sinister Banner'] = { pos = 2596, section = 2 }, ['Blue Per Bend Sinister Inverted Banner'] = { pos = 2597, section = 2 }, ['Blue Per Fess Banner'] = { pos = 2598, section = 2 }, ['Blue Per Fess Inverted Banner'] = { pos = 2599, section = 2 }, ['Blue Per Pale Banner'] = { pos = 2600, section = 2 }, ['Blue Per Pale Inverted Banner'] = { pos = 2601, section = 2 }, ['Blue Piglin Banner'] = { pos = 360, section = 2 }, ['Blue Roundel Banner'] = { pos = 2602, section = 2 }, ['Blue Saltire Banner'] = { pos = 2603, section = 2 }, ['Blue Shield'] = { pos = 2470, section = 1 }, ['Blue Shulker Box'] = { pos = 1604, section = 7 }, ['Blue Shulker Box Revision 1'] = { pos = 1417, section = 40 }, ['Blue Skull Charge Banner'] = { pos = 2604, section = 2 }, ['Blue Snout Banner'] = { pos = 360, section = 2 }, ['Blue Sparkler'] = { pos = 1747, section = 33 }, ['Blue Sparkler (active)'] = { pos = 1748, section = 33 }, ['Blue Stained Glass'] = { pos = 713, section = 7 }, ['Blue Stained Glass Pane'] = { pos = 714, section = 7 }, ['Blue Stained Glass Pane BE'] = { pos = 2009, section = 7 }, ['Blue Terracotta'] = { pos = 712, section = 7 }, ['Blue Thing Banner'] = { pos = 2605, section = 2 }, ['Blue Tinted Glass'] = { pos = 1296, section = 40 }, ['Blue Tinted Glass Pane'] = { pos = 4, section = 40 }, ['Blue Torch'] = { pos = 1749, section = 33 }, ['Blue Wood Planks'] = { pos = 245, section = 30 }, ['Blue Wool'] = { pos = 1524, section = 7 }, ['Blue Wool Revision 2'] = { pos = 715, section = 40 }, Board = { pos = 1592, section = 20 }, Boat = { pos = 1259, section = 29 }, ['Boat 15w14a'] = { pos = 621, section = 32 }, ['Boat with Chest'] = { pos = 616, section = 27 }, Bohrium = { pos = 1784, section = 34 }, Bone = { pos = 3502, section = 23 }, ['Bone Block'] = { pos = 3356, section = 15 }, ['Bone Meal'] = { pos = 3155, section = 6 }, Book = { pos = 3503, section = 23 }, ['Book and Quill'] = { pos = 3532, section = 25 }, Bookshelf = { pos = 3240, section = 12 }, Border = { pos = 1593, section = 20 }, Boron = { pos = 1785, section = 34 }, ['Boron Trioxide'] = { pos = 1915, section = 37 }, ["Bottle o' Enchanting"] = { pos = 3466, section = 22 }, ['Bottle of Mob'] = { pos = 1243, section = 32 }, ['Bottle of Void'] = { pos = 1301, section = 32 }, Bow = { pos = 1280, section = 28 }, ['Bow BE'] = { pos = 1602, section = 28 }, Bowl = { pos = 3533, section = 25 }, ['Box of Infinite Books'] = { pos = 265, section = 32 }, ['Brain Coral'] = { pos = 1712, section = 15 }, ['Brain Coral Block'] = { pos = 1707, section = 15 }, ['Brain Coral Block Revision 1'] = { pos = 1702, section = 29 }, ['Brain Coral Fan'] = { pos = 2132, section = 15 }, ['Brain Coral Fan Revision 1'] = { pos = 1723, section = 29 }, ['Brain Coral Fan Revision 2'] = { pos = 2136, section = 29 }, Bread = { pos = 3197, section = 10 }, ['Bread Revision 1'] = { pos = 2035, section = 29 }, ['Brewer Pottery Sherd'] = { pos = 1222, section = 44 }, ['Brewing Stand'] = { pos = 3597, section = 26 }, Brick = { pos = 3504, section = 23 }, ['Brick Slab'] = { pos = 3241, section = 12 }, ['Brick Slab Old'] = { pos = 871, section = 12 }, ['Brick Stairs'] = { pos = 3242, section = 12 }, ['Brick Stairs Left'] = { pos = 2257, section = 42 }, ['Brick Wall'] = { pos = 3243, section = 12 }, ['Brick Wall BE'] = { pos = 22, section = 12 }, Bricks = { pos = 110, section = 12 }, ['Bricks Old'] = { pos = 870, section = 12 }, ['Broken Anvil'] = { pos = 448, section = 26 }, ['Broken Elytra'] = { pos = 2471, section = 1 }, Bromine = { pos = 1786, section = 34 }, ['Brown Balloon'] = { pos = 1930, section = 33 }, ['Brown Banner'] = { pos = 716, section = 7 }, ['Brown Banner 15w14a'] = { pos = 474, section = 32 }, ['Brown Base Banner'] = { pos = 2606, section = 2 }, ['Brown Base Dexter Canton Banner'] = { pos = 2607, section = 2 }, ['Brown Base Gradient Banner'] = { pos = 2608, section = 2 }, ['Brown Base Indented Banner'] = { pos = 2609, section = 2 }, ['Brown Base Sinister Canton Banner'] = { pos = 2610, section = 2 }, ['Brown Beaker'] = { pos = 1893, section = 35 }, ['Brown Bed'] = { pos = 3173, section = 7 }, ['Brown Bed BE'] = { pos = 1547, section = 7 }, ['Brown Bed LCE'] = { pos = 1547, section = 7 }, ['Brown Bend Banner'] = { pos = 2611, section = 2 }, ['Brown Bend Sinister Banner'] = { pos = 2612, section = 2 }, ['Brown Bordure Banner'] = { pos = 2613, section = 2 }, ['Brown Bordure Indented Banner'] = { pos = 2614, section = 2 }, ['Brown Candle'] = { pos = 398, section = 7 }, ['Brown Carpet'] = { pos = 1623, section = 7 }, ['Brown Carpet Revision 1'] = { pos = 717, section = 40 }, ['Brown Chevron Banner'] = { pos = 2615, section = 2 }, ['Brown Chief Banner'] = { pos = 2616, section = 2 }, ['Brown Chief Dexter Canton Banner'] = { pos = 2617, section = 2 }, ['Brown Chief Indented Banner'] = { pos = 2618, section = 2 }, ['Brown Chief Sinister Canton Banner'] = { pos = 2619, section = 2 }, ['Brown Concrete'] = { pos = 1481, section = 7 }, ['Brown Concrete Powder'] = { pos = 1482, section = 7 }, ['Brown Creeper Charge Banner'] = { pos = 2620, section = 2 }, ['Brown Cross Banner'] = { pos = 2621, section = 2 }, ['Brown Dye'] = { pos = 2377, section = 6 }, ['Brown Fess Banner'] = { pos = 2622, section = 2 }, ['Brown Field Masoned Banner'] = { pos = 2623, section = 2 }, ['Brown Firework Star'] = { pos = 806, section = 9 }, ['Brown Flask'] = { pos = 1904, section = 36 }, ['Brown Flower Charge Banner'] = { pos = 2624, section = 2 }, ['Brown Glazed Terracotta'] = { pos = 1483, section = 7 }, ['Brown Globe Banner'] = { pos = 37, section = 2 }, ['Brown Glow Stick'] = { pos = 1978, section = 33 }, ['Brown Gradient Banner'] = { pos = 2625, section = 2 }, ['Brown Inverted Chevron Banner'] = { pos = 2626, section = 2 }, ['Brown Jar'] = { pos = 1918, section = 37 }, ['Brown Lozenge Banner'] = { pos = 2627, section = 2 }, ['Brown Mushroom'] = { pos = 3409, section = 19 }, ['Brown Mushroom Block'] = { pos = 3408, section = 19 }, ['Brown Pale Banner'] = { pos = 2628, section = 2 }, ['Brown Pale Dexter Banner'] = { pos = 2629, section = 2 }, ['Brown Pale Sinister Banner'] = { pos = 2630, section = 2 }, ['Brown Paly Banner'] = { pos = 2631, section = 2 }, ['Brown Per Bend Banner'] = { pos = 2632, section = 2 }, ['Brown Per Bend Inverted Banner'] = { pos = 2633, section = 2 }, ['Brown Per Bend Sinister Banner'] = { pos = 2634, section = 2 }, ['Brown Per Bend Sinister Inverted Banner'] = { pos = 2635, section = 2 }, ['Brown Per Fess Banner'] = { pos = 2636, section = 2 }, ['Brown Per Fess Inverted Banner'] = { pos = 2637, section = 2 }, ['Brown Per Pale Banner'] = { pos = 2638, section = 2 }, ['Brown Per Pale Inverted Banner'] = { pos = 2639, section = 2 }, ['Brown Piglin Banner'] = { pos = 361, section = 2 }, ['Brown Roundel Banner'] = { pos = 2640, section = 2 }, ['Brown Saltire Banner'] = { pos = 2641, section = 2 }, ['Brown Shield'] = { pos = 2472, section = 1 }, ['Brown Shulker Box'] = { pos = 1605, section = 7 }, ['Brown Shulker Box Revision 1'] = { pos = 1418, section = 40 }, ['Brown Skull Charge Banner'] = { pos = 2642, section = 2 }, ['Brown Snout Banner'] = { pos = 361, section = 2 }, ['Brown Stained Glass'] = { pos = 719, section = 7 }, ['Brown Stained Glass Pane'] = { pos = 720, section = 7 }, ['Brown Stained Glass Pane BE'] = { pos = 2010, section = 7 }, ['Brown Terracotta'] = { pos = 718, section = 7 }, ['Brown Thing Banner'] = { pos = 2643, section = 2 }, ['Brown Tinted Glass'] = { pos = 1297, section = 40 }, ['Brown Tinted Glass Pane'] = { pos = 5, section = 40 }, ['Brown Wood Planks'] = { pos = 246, section = 30 }, ['Brown Wool'] = { pos = 1525, section = 7 }, ['Brown Wool Revision 2'] = { pos = 721, section = 40 }, Brush = { pos = 1206, section = 25 }, ['Bubble Column'] = { pos = 2364, section = 15 }, ['Bubble Coral'] = { pos = 1713, section = 15 }, ['Bubble Coral Block'] = { pos = 1708, section = 15 }, ['Bubble Coral Block Revision 1'] = { pos = 1703, section = 29 }, ['Bubble Coral Fan'] = { pos = 2133, section = 15 }, ['Bubble Coral Fan Revision 1'] = { pos = 1724, section = 29 }, ['Bubble Coral Fan Revision 2'] = { pos = 2137, section = 29 }, Bucket = { pos = 3146, section = 4 }, ['Bucket of Axolotl'] = { pos = 445, section = 4 }, ['Bucket of Cod'] = { pos = 1686, section = 4 }, ['Bucket of Mud'] = { pos = 92, section = 38 }, ['Bucket of Pufferfish'] = { pos = 1687, section = 4 }, ['Bucket of Pufferfish BE'] = { pos = 2087, section = 4 }, ['Bucket of Salmon'] = { pos = 1688, section = 4 }, ['Bucket of Tadpole'] = { pos = 573, section = 4 }, ['Bucket of Tropical Fish'] = { pos = 2028, section = 4 }, ['Bucket of Tropical Fish BE'] = { pos = 1685, section = 29 }, ['Budding Amethyst'] = { pos = 399, section = 15 }, Bundle = { pos = 447, section = 25 }, ['Buried Treasure Map'] = { pos = 3579, section = 25 }, ['Buried Treasure Map BE'] = { pos = 123, section = 25 }, ['Buried Treasure Map Revision 1'] = { pos = 1219, section = 25 }, ['Burn Pottery Sherd'] = { pos = 1223, section = 44 }, Buttercup = { pos = 109, section = 38 }, ['Byte Tag'] = { pos = 1244, section = 32 }, Cactus = { pos = 3410, section = 19 }, ['Cactus BE Revision 1'] = { pos = 2163, section = 29 }, ['Cactus Green'] = { pos = 689, section = 6 }, Cadmium = { pos = 1787, section = 34 }, Caesium = { pos = 1792, section = 34 }, Cake = { pos = 3598, section = 26 }, ['Cake Revision 1'] = { pos = 2, section = 29 }, Calcite = { pos = 432, section = 15 }, Calcium = { pos = 1788, section = 34 }, ['Calcium Bromide'] = { pos = 1915, section = 37 }, ['Calcium Chloride'] = { pos = 1915, section = 37 }, Californium = { pos = 1789, section = 34 }, ['Camel Spawn Egg'] = { pos = 683, section = 24 }, Camera = { pos = 1949, section = 20 }, ['Camera (old)'] = { pos = 1365, section = 20 }, Campfire = { pos = 2459, section = 26 }, Candle = { pos = 400, section = 26 }, ['Capri Cloth'] = { pos = 232, section = 40 }, Carbon = { pos = 1790, section = 34 }, Carrot = { pos = 3198, section = 10 }, ['Carrot on a Stick'] = { pos = 3534, section = 25 }, ['Carrot Revision 2'] = { pos = 127, section = 29 }, ['Cartography Table'] = { pos = 2452, section = 26 }, ['Cartography Table Revision 1'] = { pos = 2443, section = 26 }, ['Carved Pumpkin'] = { pos = 3411, section = 19 }, ['Cast Fishing Rod'] = { pos = 227, section = 25 }, ['Cat Spawn Egg'] = { pos = 2410, section = 24 }, ['Cat Spawn Egg Revision 1'] = { pos = 1370, section = 39 }, Cauldron = { pos = 3599, section = 26 }, ['Cave Air'] = { pos = 2363, section = 15 }, ['Cave Spider Spawn Egg'] = { pos = 1144, section = 24 }, ['Cave Spider Spawn Egg Revision 1'] = { pos = 1369, section = 39 }, Cerium = { pos = 1791, section = 34 }, ['Cerium Chloride'] = { pos = 1915, section = 37 }, Cesium = { pos = 1792, section = 34 }, Chain = { pos = 290, section = 5 }, ['Chainmail Boots'] = { pos = 2473, section = 1 }, ['Chainmail Chestplate'] = { pos = 2474, section = 1 }, ['Chainmail Helmet'] = { pos = 2475, section = 1 }, ['Chainmail Leggings'] = { pos = 2476, section = 1 }, Charcoal = { pos = 3505, section = 23 }, ['Charcoal Revision 1'] = { pos = 1119, section = 29 }, ['Chartreuse Cloth'] = { pos = 234, section = 40 }, Cheese = { pos = 1245, section = 32 }, ['Cherry Boat'] = { pos = 1207, section = 27 }, ['Cherry Boat with Chest'] = { pos = 1208, section = 27 }, ['Cherry Button'] = { pos = 1188, section = 13 }, ['Cherry Door'] = { pos = 1189, section = 13 }, ['Cherry Fence'] = { pos = 1181, section = 12 }, ['Cherry Fence Gate'] = { pos = 1190, section = 13 }, ['Cherry Hanging Sign'] = { pos = 1179, section = 5 }, ['Cherry Leaves'] = { pos = 1195, section = 19 }, ['Cherry Log'] = { pos = 1196, section = 19 }, ['Cherry Planks'] = { pos = 1182, section = 12 }, ['Cherry Pressure Plate'] = { pos = 1191, section = 13 }, ['Cherry Sapling'] = { pos = 1197, section = 19 }, ['Cherry Sign'] = { pos = 1194, section = 17 }, ['Cherry Slab'] = { pos = 1183, section = 12 }, ['Cherry Stairs'] = { pos = 1184, section = 12 }, ['Cherry Trapdoor'] = { pos = 1192, section = 13 }, ['Cherry Wood'] = { pos = 1185, section = 12 }, ['Cherry Wood Button'] = { pos = 1188, section = 13 }, ['Cherry Wood Door'] = { pos = 1189, section = 13 }, ['Cherry Wood Fence'] = { pos = 1181, section = 12 }, ['Cherry Wood Fence Gate'] = { pos = 1190, section = 13 }, ['Cherry Wood Planks'] = { pos = 1182, section = 12 }, ['Cherry Wood Pressure Plate'] = { pos = 1191, section = 13 }, ['Cherry Wood Sign'] = { pos = 1194, section = 17 }, ['Cherry Wood Slab'] = { pos = 1183, section = 12 }, ['Cherry Wood Stairs'] = { pos = 1184, section = 12 }, ['Cherry Wood Trapdoor'] = { pos = 1192, section = 13 }, Chest = { pos = 1239, section = 26 }, ['Chest BE'] = { pos = 58, section = 26 }, ['Chest Revision 2'] = { pos = 375, section = 29 }, ['Chicken Spawn Egg'] = { pos = 1145, section = 24 }, ['Chicken Spawn Egg Revision 1'] = { pos = 1384, section = 39 }, ['Chipped Anvil'] = { pos = 3600, section = 26 }, ['Chiseled Bookshelf'] = { pos = 688, section = 26 }, ['Chiseled Deepslate'] = { pos = 489, section = 12 }, ['Chiseled Nether Bricks'] = { pos = 269, section = 16 }, ['Chiseled Polished Blackstone'] = { pos = 270, section = 16 }, ['Chiseled Quartz Block'] = { pos = 872, section = 12 }, ['Chiseled Red Sandstone'] = { pos = 3244, section = 12 }, ['Chiseled Sandstone'] = { pos = 3245, section = 12 }, ['Chiseled Stone Bricks'] = { pos = 3357, section = 15 }, ['Chiseled Stone Bricks Monster Egg'] = { pos = 3357, section = 15 }, Chlorine = { pos = 1793, section = 34 }, ['Chorus Flower'] = { pos = 3412, section = 19 }, ['Chorus Fruit'] = { pos = 3199, section = 10 }, ['Chorus Plant'] = { pos = 3413, section = 19 }, Chromium = { pos = 1794, section = 34 }, Clay = { pos = 3358, section = 15 }, ['Clay (ball)'] = { pos = 3506, section = 23 }, ['Clay (block)'] = { pos = 3358, section = 15 }, ['Clay Ball'] = { pos = 3506, section = 23 }, Clock = { pos = 549, section = 25 }, ['Clock Revision 1'] = { pos = 2169, section = 29 }, ['Clock Revision 2'] = { pos = 511, section = 29 }, Clownfish = { pos = 825, section = 10 }, ['Clownfish Revision 1'] = { pos = 825, section = 10 }, ['Cluckshroom Spawn Egg'] = { pos = 624, section = 38 }, Coal = { pos = 3507, section = 23 }, ['Coal Ore'] = { pos = 3391, section = 18 }, ['Coal Revision 2'] = { pos = 1119, section = 29 }, ['Coarse Dirt'] = { pos = 974, section = 15 }, ['Coast Armor Trim'] = { pos = 204, section = 41 }, ['Coast Armor Trim Smithing Template'] = { pos = 204, section = 41 }, Cobalt = { pos = 1795, section = 34 }, ['Cobbled Deepslate'] = { pos = 513, section = 12 }, ['Cobbled Deepslate Slab'] = { pos = 494, section = 12 }, ['Cobbled Deepslate Stairs'] = { pos = 495, section = 12 }, ['Cobbled Deepslate Wall'] = { pos = 500, section = 12 }, ['Cobbled Deepslate Wall BE'] = { pos = 560, section = 12 }, Cobblestone = { pos = 3359, section = 12 }, ['Cobblestone Monster Egg'] = { pos = 3359, section = 12 }, ['Cobblestone Slab'] = { pos = 3246, section = 12 }, ['Cobblestone Stairs'] = { pos = 3247, section = 12 }, ['Cobblestone Stairs Left'] = { pos = 2258, section = 42 }, ['Cobblestone Wall'] = { pos = 3248, section = 12 }, ['Cobblestone Wall BE'] = { pos = 2024, section = 12 }, Cobweb = { pos = 3360, section = 15 }, ['Cocoa Beans'] = { pos = 3156, section = 6 }, ['Cod Spawn Egg'] = { pos = 1697, section = 24 }, ['Cod Spawn Egg Revision 1'] = { pos = 1968, section = 39 }, Compass = { pos = 550, section = 25 }, ['Compass Revision 1'] = { pos = 2168, section = 29 }, ['Compass Revision 2'] = { pos = 512, section = 29 }, Composter = { pos = 2460, section = 13 }, ['Compound Creator'] = { pos = 1931, section = 33 }, ['Compound Tag'] = { pos = 1246, section = 32 }, Conduit = { pos = 2033, section = 26 }, ['Conduit BE'] = { pos = 213, section = 26 }, ['Cooked Beef'] = { pos = 848, section = 10 }, ['Cooked Chicken'] = { pos = 3200, section = 10 }, ['Cooked Cod'] = { pos = 1690, section = 10 }, ['Cooked Fish'] = { pos = 827, section = 10 }, ['Cooked Fish Revision 1'] = { pos = 827, section = 10 }, ['Cooked Mutton'] = { pos = 3201, section = 10 }, ['Cooked Porkchop'] = { pos = 3202, section = 10 }, ['Cooked Rabbit'] = { pos = 3203, section = 10 }, ['Cooked Salmon'] = { pos = 1691, section = 10 }, ['Cooked Salmon 3DS'] = { pos = 831, section = 10 }, ['Cooked Salmon Revision 1'] = { pos = 831, section = 10 }, Cookie = { pos = 3204, section = 10 }, Copernicium = { pos = 1796, section = 34 }, Copper = { pos = 1797, section = 34 }, ['Copper Block'] = { pos = 401, section = 12 }, ['Copper Horn'] = { pos = 583, section = 25 }, ['Copper Ingot'] = { pos = 450, section = 23 }, ['Copper Ore'] = { pos = 449, section = 18 }, ['Copper Sink'] = { pos = 1247, section = 32 }, ['Copper Spleaves'] = { pos = 1248, section = 32 }, ['Copper Trim Chainmail Boots'] = { pos = 862, section = 43 }, ['Copper Trim Chainmail Chestplate'] = { pos = 863, section = 43 }, ['Copper Trim Chainmail Helmet'] = { pos = 864, section = 43 }, ['Copper Trim Chainmail Leggings'] = { pos = 865, section = 43 }, ['Copper Trim Diamond Boots'] = { pos = 866, section = 43 }, ['Copper Trim Diamond Chestplate'] = { pos = 868, section = 43 }, ['Copper Trim Diamond Helmet'] = { pos = 869, section = 43 }, ['Copper Trim Diamond Leggings'] = { pos = 873, section = 43 }, ['Copper Trim Golden Boots'] = { pos = 874, section = 43 }, ['Copper Trim Golden Chestplate'] = { pos = 875, section = 43 }, ['Copper Trim Golden Helmet'] = { pos = 876, section = 43 }, ['Copper Trim Golden Leggings'] = { pos = 877, section = 43 }, ['Copper Trim Iron Boots'] = { pos = 878, section = 43 }, ['Copper Trim Iron Chestplate'] = { pos = 879, section = 43 }, ['Copper Trim Iron Helmet'] = { pos = 880, section = 43 }, ['Copper Trim Iron Leggings'] = { pos = 882, section = 43 }, ['Copper Trim Leather Boots'] = { pos = 883, section = 43 }, ['Copper Trim Leather Cap'] = { pos = 885, section = 43 }, ['Copper Trim Leather Pants'] = { pos = 887, section = 43 }, ['Copper Trim Leather Tunic'] = { pos = 888, section = 43 }, ['Copper Trim Netherite Boots'] = { pos = 889, section = 43 }, ['Copper Trim Netherite Chestplate'] = { pos = 890, section = 43 }, ['Copper Trim Netherite Helmet'] = { pos = 891, section = 43 }, ['Copper Trim Netherite Leggings'] = { pos = 892, section = 43 }, ['Copper Trim Turtle Shell'] = { pos = 893, section = 43 }, Cornflower = { pos = 2389, section = 19 }, ['Cow Spawn Egg'] = { pos = 1146, section = 24 }, ['Cow Spawn Egg Revision 1'] = { pos = 1385, section = 39 }, ['Cracked Deepslate Bricks'] = { pos = 520, section = 12 }, ['Cracked Deepslate Tiles'] = { pos = 521, section = 12 }, ['Cracked Nether Bricks'] = { pos = 271, section = 16 }, ['Cracked Polished Blackstone Bricks'] = { pos = 272, section = 16 }, ['Cracked Stone Bricks'] = { pos = 3361, section = 15 }, ['Cracked Stone Bricks Monster Egg'] = { pos = 3361, section = 15 }, ['Crafting Table'] = { pos = 3601, section = 26 }, ['Creeper Head'] = { pos = 964, section = 14 }, ['Creeper Head BE'] = { pos = 215, section = 14 }, ['Creeper Spawn Egg'] = { pos = 1147, section = 24 }, ['Creeper Spawn Egg Revision 1'] = { pos = 1386, section = 39 }, ['Crimson Button'] = { pos = 167, section = 13 }, ['Crimson Door'] = { pos = 168, section = 13 }, ['Crimson Fence'] = { pos = 648, section = 12 }, ['Crimson Fence BE'] = { pos = 161, section = 12 }, ['Crimson Fence Gate'] = { pos = 179, section = 13 }, ['Crimson Fence Gate BE'] = { pos = 379, section = 13 }, ['Crimson Fungus'] = { pos = 158, section = 16 }, ['Crimson Hanging Sign'] = { pos = 652, section = 5 }, ['Crimson Hyphae'] = { pos = 198, section = 16 }, ['Crimson Nylium'] = { pos = 149, section = 16 }, ['Crimson Planks'] = { pos = 146, section = 12 }, ['Crimson Pressure Plate'] = { pos = 169, section = 13 }, ['Crimson Roots'] = { pos = 190, section = 16 }, ['Crimson Sign'] = { pos = 177, section = 17 }, ['Crimson Slab'] = { pos = 162, section = 12 }, ['Crimson Stairs'] = { pos = 163, section = 12 }, ['Crimson Stem'] = { pos = 150, section = 16 }, ['Crimson Trapdoor'] = { pos = 170, section = 13 }, Crossbow = { pos = 2382, section = 28 }, ['Crude Oil'] = { pos = 1891, section = 35 }, ['Crying Obsidian'] = { pos = 197, section = 16 }, ['Crying Obsidian BE'] = { pos = 509, section = 16 }, ['Crystallized Honey'] = { pos = 95, section = 30 }, Cuprum = { pos = 1797, section = 34 }, Curium = { pos = 1798, section = 34 }, ['Cut Copper'] = { pos = 402, section = 12 }, ['Cut Copper Block'] = { pos = 402, section = 12 }, ['Cut Copper Slab'] = { pos = 403, section = 12 }, ['Cut Copper Stairs'] = { pos = 404, section = 12 }, ['Cut Red Sandstone'] = { pos = 3249, section = 12 }, ['Cut Red Sandstone Slab'] = { pos = 2466, section = 12 }, ['Cut Sandstone'] = { pos = 3250, section = 12 }, ['Cut Sandstone Slab'] = { pos = 2467, section = 12 }, ['Cyan Balloon'] = { pos = 1932, section = 33 }, ['Cyan Banner'] = { pos = 722, section = 7 }, ['Cyan Banner 15w14a'] = { pos = 475, section = 32 }, ['Cyan Base Banner'] = { pos = 2644, section = 2 }, ['Cyan Base Dexter Canton Banner'] = { pos = 2645, section = 2 }, ['Cyan Base Gradient Banner'] = { pos = 2646, section = 2 }, ['Cyan Base Indented Banner'] = { pos = 2647, section = 2 }, ['Cyan Base Sinister Canton Banner'] = { pos = 2648, section = 2 }, ['Cyan Bed'] = { pos = 3174, section = 7 }, ['Cyan Bed BE'] = { pos = 1548, section = 7 }, ['Cyan Bed LCE'] = { pos = 1548, section = 7 }, ['Cyan Bend Banner'] = { pos = 2649, section = 2 }, ['Cyan Bend Sinister Banner'] = { pos = 2650, section = 2 }, ['Cyan Bordure Banner'] = { pos = 2651, section = 2 }, ['Cyan Bordure Indented Banner'] = { pos = 2652, section = 2 }, ['Cyan Candle'] = { pos = 405, section = 7 }, ['Cyan Carpet'] = { pos = 1624, section = 7 }, ['Cyan Carpet Revision 1'] = { pos = 723, section = 40 }, ['Cyan Chevron Banner'] = { pos = 2653, section = 2 }, ['Cyan Chief Banner'] = { pos = 2655, section = 2 }, ['Cyan Chief Dexter Canton Banner'] = { pos = 2656, section = 2 }, ['Cyan Chief Indented Banner'] = { pos = 2657, section = 2 }, ['Cyan Chief Sinister Canton Banner'] = { pos = 2658, section = 2 }, ['Cyan Cloth'] = { pos = 229, section = 40 }, ['Cyan Concrete'] = { pos = 1484, section = 7 }, ['Cyan Concrete Powder'] = { pos = 1485, section = 7 }, ['Cyan Creeper Charge Banner'] = { pos = 2659, section = 2 }, ['Cyan Cross Banner'] = { pos = 2660, section = 2 }, ['Cyan Dye'] = { pos = 3157, section = 6 }, ['Cyan Fess Banner'] = { pos = 2661, section = 2 }, ['Cyan Field Masoned Banner'] = { pos = 2662, section = 2 }, ['Cyan Firework Star'] = { pos = 807, section = 9 }, ['Cyan Flower Charge Banner'] = { pos = 2663, section = 2 }, ['Cyan Glazed Terracotta'] = { pos = 1540, section = 7 }, ['Cyan Glazed Terracotta Revision 1'] = { pos = 1486, section = 40 }, ['Cyan Globe Banner'] = { pos = 38, section = 2 }, ['Cyan Glow Stick'] = { pos = 1979, section = 33 }, ['Cyan Gradient Banner'] = { pos = 2664, section = 2 }, ['Cyan Inverted Chevron Banner'] = { pos = 2654, section = 2 }, ['Cyan Lozenge Banner'] = { pos = 2665, section = 2 }, ['Cyan Pale Banner'] = { pos = 2666, section = 2 }, ['Cyan Pale Dexter Banner'] = { pos = 2667, section = 2 }, ['Cyan Pale Sinister Banner'] = { pos = 2668, section = 2 }, ['Cyan Paly Banner'] = { pos = 2669, section = 2 }, ['Cyan Per Bend Banner'] = { pos = 2670, section = 2 }, ['Cyan Per Bend Inverted Banner'] = { pos = 2671, section = 2 }, ['Cyan Per Bend Sinister Banner'] = { pos = 2672, section = 2 }, ['Cyan Per Bend Sinister Inverted Banner'] = { pos = 2673, section = 2 }, ['Cyan Per Fess Banner'] = { pos = 2674, section = 2 }, ['Cyan Per Fess Inverted Banner'] = { pos = 2675, section = 2 }, ['Cyan Per Pale Banner'] = { pos = 2676, section = 2 }, ['Cyan Per Pale Inverted Banner'] = { pos = 2677, section = 2 }, ['Cyan Piglin Banner'] = { pos = 362, section = 2 }, ['Cyan Roundel Banner'] = { pos = 2678, section = 2 }, ['Cyan Saltire Banner'] = { pos = 2679, section = 2 }, ['Cyan Shield'] = { pos = 2477, section = 1 }, ['Cyan Shulker Box'] = { pos = 1606, section = 7 }, ['Cyan Shulker Box Revision 1'] = { pos = 1419, section = 40 }, ['Cyan Skull Charge Banner'] = { pos = 2680, section = 2 }, ['Cyan Snout Banner'] = { pos = 362, section = 2 }, ['Cyan Stained Glass'] = { pos = 725, section = 7 }, ['Cyan Stained Glass Pane'] = { pos = 726, section = 7 }, ['Cyan Stained Glass Pane BE'] = { pos = 2011, section = 7 }, ['Cyan Terracotta'] = { pos = 724, section = 7 }, ['Cyan Thing Banner'] = { pos = 2681, section = 2 }, ['Cyan Tinted Glass'] = { pos = 1298, section = 40 }, ['Cyan Tinted Glass Pane'] = { pos = 6, section = 40 }, ['Cyan Wood Planks'] = { pos = 247, section = 30 }, ['Cyan Wool'] = { pos = 1526, section = 7 }, ['Cyan Wool Revision 2'] = { pos = 727, section = 40 }, Cyanoacrylate = { pos = 1750, section = 33 }, ['Damaged Anvil'] = { pos = 3602, section = 26 }, ['Damaged Arrow Loaded Crossbow'] = { pos = 2384, section = 28 }, ['Damaged Bow'] = { pos = 1281, section = 28 }, ['Damaged Brush'] = { pos = 1209, section = 25 }, ['Damaged Carrot on a Stick'] = { pos = 3535, section = 25 }, ['Damaged Chainmail Boots'] = { pos = 2478, section = 1 }, ['Damaged Chainmail Chestplate'] = { pos = 2479, section = 1 }, ['Damaged Chainmail Helmet'] = { pos = 2480, section = 1 }, ['Damaged Chainmail Leggings'] = { pos = 2481, section = 1 }, ['Damaged Crossbow'] = { pos = 2385, section = 28 }, ['Damaged Diamond Axe'] = { pos = 3536, section = 25 }, ['Damaged Diamond Boots'] = { pos = 2482, section = 1 }, ['Damaged Diamond Chestplate'] = { pos = 2483, section = 1 }, ['Damaged Diamond Helmet'] = { pos = 2484, section = 1 }, ['Damaged Diamond Hoe'] = { pos = 3537, section = 25 }, ['Damaged Diamond Leggings'] = { pos = 2485, section = 1 }, ['Damaged Diamond Pickaxe'] = { pos = 3538, section = 25 }, ['Damaged Diamond Shovel'] = { pos = 3539, section = 25 }, ['Damaged Diamond Sword'] = { pos = 3630, section = 28 }, ['Damaged Elytra'] = { pos = 2486, section = 1 }, ['Damaged Firework Loaded Crossbow'] = { pos = 2386, section = 28 }, ['Damaged Fishing Rod'] = { pos = 3540, section = 25 }, ['Damaged Flint and Steel'] = { pos = 3541, section = 25 }, ['Damaged Golden Axe'] = { pos = 3542, section = 25 }, ['Damaged Golden Boots'] = { pos = 2487, section = 1 }, ['Damaged Golden Chestplate'] = { pos = 2488, section = 1 }, ['Damaged Golden Helmet'] = { pos = 2489, section = 1 }, ['Damaged Golden Hoe'] = { pos = 3543, section = 25 }, ['Damaged Golden Leggings'] = { pos = 2490, section = 1 }, ['Damaged Golden Pickaxe'] = { pos = 3544, section = 25 }, ['Damaged Golden Shovel'] = { pos = 3545, section = 25 }, ['Damaged Golden Sword'] = { pos = 3631, section = 28 }, ['Damaged Iron Axe'] = { pos = 3546, section = 25 }, ['Damaged Iron Boots'] = { pos = 2491, section = 1 }, ['Damaged Iron Chestplate'] = { pos = 2492, section = 1 }, ['Damaged Iron Helmet'] = { pos = 2493, section = 1 }, ['Damaged Iron Hoe'] = { pos = 3547, section = 25 }, ['Damaged Iron Leggings'] = { pos = 2494, section = 1 }, ['Damaged Iron Pickaxe'] = { pos = 3548, section = 25 }, ['Damaged Iron Shovel'] = { pos = 3549, section = 25 }, ['Damaged Iron Sword'] = { pos = 3632, section = 28 }, ['Damaged Leather Boots'] = { pos = 2495, section = 1 }, ['Damaged Leather Cap'] = { pos = 2496, section = 1 }, ['Damaged Leather Pants'] = { pos = 2497, section = 1 }, ['Damaged Leather Tunic'] = { pos = 2498, section = 1 }, ['Damaged Netherite Axe'] = { pos = 181, section = 25 }, ['Damaged Netherite Boots'] = { pos = 182, section = 1 }, ['Damaged Netherite Chestplate'] = { pos = 183, section = 1 }, ['Damaged Netherite Helmet'] = { pos = 184, section = 1 }, ['Damaged Netherite Hoe'] = { pos = 185, section = 25 }, ['Damaged Netherite Leggings'] = { pos = 186, section = 1 }, ['Damaged Netherite Pickaxe'] = { pos = 187, section = 25 }, ['Damaged Netherite Shovel'] = { pos = 188, section = 25 }, ['Damaged Netherite Sword'] = { pos = 189, section = 28 }, ['Damaged Shears'] = { pos = 3550, section = 25 }, ['Damaged Shield'] = { pos = 2499, section = 1 }, ['Damaged Stone Axe'] = { pos = 3551, section = 25 }, ['Damaged Stone Hoe'] = { pos = 3552, section = 25 }, ['Damaged Stone Pickaxe'] = { pos = 3553, section = 25 }, ['Damaged Stone Shovel'] = { pos = 3554, section = 25 }, ['Damaged Stone Sword'] = { pos = 3633, section = 28 }, ['Damaged Trident'] = { pos = 100, section = 28 }, ['Damaged Turtle Shell'] = { pos = 2456, section = 1 }, ['Damaged Warped Fungus on a Stick'] = { pos = 382, section = 25 }, ['Damaged Wooden Axe'] = { pos = 3555, section = 25 }, ['Damaged Wooden Hoe'] = { pos = 3556, section = 25 }, ['Damaged Wooden Pickaxe'] = { pos = 3557, section = 25 }, ['Damaged Wooden Shovel'] = { pos = 3558, section = 25 }, ['Damaged Wooden Sword'] = { pos = 3634, section = 28 }, Dandelion = { pos = 3414, section = 19 }, ['Dandelion Yellow'] = { pos = 692, section = 6 }, ['Danger Pottery Sherd'] = { pos = 1224, section = 44 }, ['Dark Gray Beaker'] = { pos = 1894, section = 35 }, ['Dark Gray Cloth'] = { pos = 230, section = 40 }, ['Dark Gray Flask'] = { pos = 1905, section = 36 }, ['Dark Gray Jar'] = { pos = 1919, section = 37 }, ['Dark Oak Boat'] = { pos = 638, section = 27 }, ['Dark Oak Boat Revision 2'] = { pos = 3620, section = 29 }, ['Dark Oak Boat with Chest'] = { pos = 614, section = 27 }, ['Dark Oak Button'] = { pos = 3332, section = 13 }, ['Dark Oak Door'] = { pos = 568, section = 13 }, ['Dark Oak Door Revision 3'] = { pos = 939, section = 13 }, ['Dark Oak Fence'] = { pos = 646, section = 12 }, ['Dark Oak Fence BE'] = { pos = 3252, section = 12 }, ['Dark Oak Fence Gate'] = { pos = 3251, section = 13 }, ['Dark Oak Fence Gate BE'] = { pos = 54, section = 13 }, ['Dark Oak Hanging Sign'] = { pos = 653, section = 5 }, ['Dark Oak Leaves'] = { pos = 3415, section = 19 }, ['Dark Oak Log'] = { pos = 3416, section = 19 }, ['Dark Oak Planks'] = { pos = 881, section = 12 }, ['Dark Oak Pressure Plate'] = { pos = 3333, section = 13 }, ['Dark Oak Sapling'] = { pos = 3417, section = 19 }, ['Dark Oak Sign'] = { pos = 2397, section = 17 }, ['Dark Oak Slab'] = { pos = 3253, section = 12 }, ['Dark Oak Stairs'] = { pos = 3254, section = 12 }, ['Dark Oak Trapdoor'] = { pos = 1651, section = 13 }, ['Dark Oak Wood'] = { pos = 3255, section = 12 }, ['Dark Oak Wood Button'] = { pos = 3332, section = 13 }, ['Dark Oak Wood Door'] = { pos = 568, section = 13 }, ['Dark Oak Wood Fence'] = { pos = 646, section = 12 }, ['Dark Oak Wood Fence Gate'] = { pos = 3251, section = 13 }, ['Dark Oak Wood Planks'] = { pos = 881, section = 12 }, ['Dark Oak Wood Pressure Plate'] = { pos = 3333, section = 13 }, ['Dark Oak Wood Sign'] = { pos = 2397, section = 17 }, ['Dark Oak Wood Slab'] = { pos = 3253, section = 12 }, ['Dark Oak Wood Stairs'] = { pos = 3254, section = 12 }, ['Dark Oak Wood Trapdoor'] = { pos = 1651, section = 13 }, ['Dark Prismarine'] = { pos = 3362, section = 15 }, ['Dark Prismarine Slab'] = { pos = 3256, section = 12 }, ['Dark Prismarine Stairs'] = { pos = 3257, section = 12 }, Darmstadtium = { pos = 1799, section = 34 }, ['Daylight Detector'] = { pos = 1242, section = 26 }, ['Daylight Sensor'] = { pos = 1242, section = 26 }, ['Dead Brain Coral'] = { pos = 2368, section = 15 }, ['Dead Brain Coral Block'] = { pos = 1718, section = 15 }, ['Dead Brain Coral Fan'] = { pos = 2146, section = 15 }, ['Dead Brain Coral Fan Revision 1'] = { pos = 1737, section = 29 }, ['Dead Bubble Coral'] = { pos = 2369, section = 15 }, ['Dead Bubble Coral Block'] = { pos = 1719, section = 15 }, ['Dead Bubble Coral Fan'] = { pos = 2147, section = 15 }, ['Dead Bubble Coral Fan Revision 1'] = { pos = 1738, section = 29 }, ['Dead Bush'] = { pos = 3418, section = 19 }, ['Dead Coral'] = { pos = 1701, section = 29 }, ['Dead Fire Coral'] = { pos = 2370, section = 15 }, ['Dead Fire Coral Block'] = { pos = 1720, section = 15 }, ['Dead Fire Coral Fan'] = { pos = 2148, section = 15 }, ['Dead Fire Coral Fan Revision 1'] = { pos = 1739, section = 29 }, ['Dead Horn Coral'] = { pos = 2371, section = 15 }, ['Dead Horn Coral Block'] = { pos = 1721, section = 15 }, ['Dead Horn Coral Fan'] = { pos = 2149, section = 15 }, ['Dead Horn Coral Fan Revision 1'] = { pos = 1740, section = 29 }, ['Dead Tube Coral'] = { pos = 2367, section = 15 }, ['Dead Tube Coral Block'] = { pos = 1717, section = 15 }, ['Dead Tube Coral Fan'] = { pos = 2150, section = 15 }, ['Dead Tube Coral Fan Revision 1'] = { pos = 1741, section = 29 }, ['Debug Stick'] = { pos = 1140, section = 23 }, ['Decorated Pot'] = { pos = 1180, section = 5 }, Deepslate = { pos = 503, section = 15 }, ['Deepslate Brick Slab'] = { pos = 490, section = 12 }, ['Deepslate Brick Stairs'] = { pos = 491, section = 12 }, ['Deepslate Brick Wall'] = { pos = 492, section = 12 }, ['Deepslate Brick Wall BE'] = { pos = 563, section = 12 }, ['Deepslate Bricks'] = { pos = 493, section = 12 }, ['Deepslate Coal Ore'] = { pos = 522, section = 18 }, ['Deepslate Copper Ore'] = { pos = 523, section = 18 }, ['Deepslate Diamond Ore'] = { pos = 514, section = 18 }, ['Deepslate Emerald Ore'] = { pos = 524, section = 18 }, ['Deepslate Gold Ore'] = { pos = 515, section = 18 }, ['Deepslate Iron Ore'] = { pos = 516, section = 18 }, ['Deepslate Lapis Lazuli Ore'] = { pos = 517, section = 18 }, ['Deepslate Redstone Ore'] = { pos = 518, section = 18 }, ['Deepslate Tile Slab'] = { pos = 496, section = 12 }, ['Deepslate Tile Stairs'] = { pos = 497, section = 12 }, ['Deepslate Tile Wall'] = { pos = 498, section = 12 }, ['Deepslate Tile Wall BE'] = { pos = 561, section = 12 }, ['Deepslate Tiles'] = { pos = 499, section = 12 }, Deny = { pos = 1436, section = 20 }, ['Desert Village Map'] = { pos = 1326, section = 25 }, ['Desert Village Map BE'] = { pos = 1327, section = 25 }, ['Detector Rail'] = { pos = 3334, section = 13 }, Diamond = { pos = 3508, section = 23 }, ['Diamond Axe'] = { pos = 3559, section = 25 }, ['Diamond Boots'] = { pos = 2500, section = 1 }, ['Diamond Chestplate'] = { pos = 2501, section = 1 }, ['Diamond Drows'] = { pos = 1320, section = 32 }, ['Diamond Heart'] = { pos = 118, section = 32 }, ['Diamond Helmet'] = { pos = 2502, section = 1 }, ['Diamond Hoe'] = { pos = 3560, section = 25 }, ['Diamond Horse Armor'] = { pos = 29, section = 1 }, ['Diamond Leggings'] = { pos = 2503, section = 1 }, ['Diamond Ore'] = { pos = 3392, section = 18 }, ['Diamond Pickaxe'] = { pos = 3561, section = 25 }, ['Diamond Shovel'] = { pos = 3562, section = 25 }, ['Diamond Sword'] = { pos = 3635, section = 28 }, ['Diamond Trim Chainmail Boots'] = { pos = 894, section = 43 }, ['Diamond Trim Chainmail Chestplate'] = { pos = 895, section = 43 }, ['Diamond Trim Chainmail Helmet'] = { pos = 897, section = 43 }, ['Diamond Trim Chainmail Leggings'] = { pos = 898, section = 43 }, ['Diamond Trim Diamond Boots'] = { pos = 899, section = 43 }, ['Diamond Trim Diamond Chestplate'] = { pos = 900, section = 43 }, ['Diamond Trim Diamond Helmet'] = { pos = 902, section = 43 }, ['Diamond Trim Diamond Leggings'] = { pos = 905, section = 43 }, ['Diamond Trim Golden Boots'] = { pos = 912, section = 43 }, ['Diamond Trim Golden Chestplate'] = { pos = 913, section = 43 }, ['Diamond Trim Golden Helmet'] = { pos = 914, section = 43 }, ['Diamond Trim Golden Leggings'] = { pos = 915, section = 43 }, ['Diamond Trim Iron Boots'] = { pos = 916, section = 43 }, ['Diamond Trim Iron Chestplate'] = { pos = 917, section = 43 }, ['Diamond Trim Iron Helmet'] = { pos = 918, section = 43 }, ['Diamond Trim Iron Leggings'] = { pos = 919, section = 43 }, ['Diamond Trim Leather Boots'] = { pos = 921, section = 43 }, ['Diamond Trim Leather Cap'] = { pos = 922, section = 43 }, ['Diamond Trim Leather Pants'] = { pos = 924, section = 43 }, ['Diamond Trim Leather Tunic'] = { pos = 925, section = 43 }, ['Diamond Trim Netherite Boots'] = { pos = 926, section = 43 }, ['Diamond Trim Netherite Chestplate'] = { pos = 927, section = 43 }, ['Diamond Trim Netherite Helmet'] = { pos = 928, section = 43 }, ['Diamond Trim Netherite Leggings'] = { pos = 930, section = 43 }, ['Diamond Trim Turtle Shell'] = { pos = 931, section = 43 }, Diorite = { pos = 3363, section = 15 }, ['Diorite Slab'] = { pos = 3258, section = 12 }, ['Diorite Stairs'] = { pos = 3259, section = 12 }, ['Diorite Wall'] = { pos = 3260, section = 12 }, ['Diorite Wall BE'] = { pos = 23, section = 12 }, Dirt = { pos = 979, section = 15 }, ['Dirt Path'] = { pos = 1348, section = 15 }, ['Disc Fragment 5'] = { pos = 631, section = 23 }, Dispenser = { pos = 3603, section = 26 }, ['Dispenser Revision 1'] = { pos = 2239, section = 29 }, ['Dolphin Spawn Egg'] = { pos = 1967, section = 24 }, ['Donkey Spawn Egg'] = { pos = 1371, section = 24 }, ['Donkey Spawn Egg Revision 1'] = { pos = 1152, section = 24 }, ['Double Smooth Stone Slab'] = { pos = 884, section = 12 }, ['Double Tag'] = { pos = 1250, section = 32 }, ['Dragon Egg'] = { pos = 3187, section = 8 }, ['Dragon Egg BE'] = { pos = 506, section = 8 }, ['Dragon Head'] = { pos = 965, section = 14 }, ['Dragon Head BE'] = { pos = 216, section = 14 }, ['Dragon Head BE Revision 1'] = { pos = 108, section = 29 }, ["Dragon's Breath"] = { pos = 3138, section = 3 }, ['Dried Kelp'] = { pos = 1682, section = 10 }, ['Dried Kelp Block'] = { pos = 1669, section = 12 }, ['Dripstone Block'] = { pos = 435, section = 15 }, Dropper = { pos = 3604, section = 26 }, ['Drowned Spawn Egg'] = { pos = 1727, section = 24 }, Dubnium = { pos = 1800, section = 34 }, ['Dune Armor Trim'] = { pos = 702, section = 41 }, ['Dune Armor Trim Smithing Template'] = { pos = 702, section = 41 }, ['Dupe Hack'] = { pos = 1321, section = 32 }, Dysprosium = { pos = 1801, section = 34 }, ['Earth Ruby'] = { pos = 130, section = 38 }, ['Echo Shard'] = { pos = 622, section = 23 }, Egg = { pos = 3205, section = 10 }, Einsteinium = { pos = 1802, section = 34 }, ['Elder Guardian Spawn Egg'] = { pos = 1372, section = 24 }, ['Element Constructor'] = { pos = 1933, section = 33 }, Elixir = { pos = 1751, section = 33 }, Elytra = { pos = 2504, section = 1 }, Emerald = { pos = 3509, section = 23 }, ['Emerald Ore'] = { pos = 3393, section = 18 }, ['Emerald Trim Chainmail Boots'] = { pos = 932, section = 43 }, ['Emerald Trim Chainmail Chestplate'] = { pos = 934, section = 43 }, ['Emerald Trim Chainmail Helmet'] = { pos = 936, section = 43 }, ['Emerald Trim Chainmail Leggings'] = { pos = 938, section = 43 }, ['Emerald Trim Diamond Boots'] = { pos = 940, section = 43 }, ['Emerald Trim Diamond Chestplate'] = { pos = 943, section = 43 }, ['Emerald Trim Diamond Helmet'] = { pos = 944, section = 43 }, ['Emerald Trim Diamond Leggings'] = { pos = 946, section = 43 }, ['Emerald Trim Golden Boots'] = { pos = 947, section = 43 }, ['Emerald Trim Golden Chestplate'] = { pos = 948, section = 43 }, ['Emerald Trim Golden Helmet'] = { pos = 949, section = 43 }, ['Emerald Trim Golden Leggings'] = { pos = 950, section = 43 }, ['Emerald Trim Iron Boots'] = { pos = 951, section = 43 }, ['Emerald Trim Iron Chestplate'] = { pos = 952, section = 43 }, ['Emerald Trim Iron Helmet'] = { pos = 953, section = 43 }, ['Emerald Trim Iron Leggings'] = { pos = 955, section = 43 }, ['Emerald Trim Leather Boots'] = { pos = 956, section = 43 }, ['Emerald Trim Leather Cap'] = { pos = 957, section = 43 }, ['Emerald Trim Leather Pants'] = { pos = 959, section = 43 }, ['Emerald Trim Leather Tunic'] = { pos = 960, section = 43 }, ['Emerald Trim Netherite Boots'] = { pos = 961, section = 43 }, ['Emerald Trim Netherite Chestplate'] = { pos = 962, section = 43 }, ['Emerald Trim Netherite Helmet'] = { pos = 963, section = 43 }, ['Emerald Trim Netherite Leggings'] = { pos = 970, section = 43 }, ['Emerald Trim Turtle Shell'] = { pos = 972, section = 43 }, ['Empty Locator Map'] = { pos = 3563, section = 25 }, ['Empty Map'] = { pos = 3563, section = 25 }, ['Enchanted Apple'] = { pos = 3206, section = 10 }, ['Enchanted Book'] = { pos = 3564, section = 25 }, ['Enchanted Golden Apple'] = { pos = 3206, section = 10 }, ['Enchanting Table'] = { pos = 3605, section = 26 }, ['Enchanting Table BE'] = { pos = 214, section = 26 }, ['Enchantment Table'] = { pos = 3605, section = 26 }, ['End Crystal'] = { pos = 3188, section = 8 }, ['End Gateway'] = { pos = 1561, section = 8 }, ['End Gateway BE'] = { pos = 352, section = 8 }, ['End Portal'] = { pos = 1010, section = 17 }, ['End Portal BE'] = { pos = 353, section = 8 }, ['End Portal Frame'] = { pos = 3189, section = 8 }, ['End Portal Frame BE'] = { pos = 507, section = 8 }, ['End Rod'] = { pos = 3190, section = 8 }, ['End Rod BE'] = { pos = 208, section = 8 }, ['End Stone'] = { pos = 3191, section = 8 }, ['End Stone Brick Slab'] = { pos = 2418, section = 12 }, ['End Stone Brick Stairs'] = { pos = 2419, section = 12 }, ['End Stone Brick Wall'] = { pos = 2401, section = 12 }, ['End Stone Brick Wall BE'] = { pos = 24, section = 12 }, ['End Stone Bricks'] = { pos = 3261, section = 12 }, ['Ender Chest'] = { pos = 3606, section = 26 }, ['Ender Chest BE'] = { pos = 2372, section = 26 }, ['Ender Dragon Spawn Egg'] = { pos = 695, section = 24 }, ['Ender Pearl'] = { pos = 3510, section = 23 }, ['Enderman Spawn Egg'] = { pos = 1148, section = 24 }, ['Enderman Spawn Egg Revision 1'] = { pos = 1387, section = 39 }, ['Endermite Spawn Egg'] = { pos = 1149, section = 24 }, Erbium = { pos = 1803, section = 34 }, ['Etho Slab'] = { pos = 2117, section = 32 }, Europium = { pos = 1804, section = 34 }, ['Evoker Spawn Egg'] = { pos = 1411, section = 24 }, ['Explorer Pottery Sherd'] = { pos = 1225, section = 44 }, ['Exposed Copper'] = { pos = 411, section = 12 }, ['Exposed Copper Block'] = { pos = 411, section = 12 }, ['Exposed Cut Copper'] = { pos = 412, section = 12 }, ['Exposed Cut Copper Block'] = { pos = 412, section = 12 }, ['Exposed Cut Copper Slab'] = { pos = 413, section = 12 }, ['Exposed Cut Copper Stairs'] = { pos = 414, section = 12 }, ['Eye Armor Trim'] = { pos = 800, section = 41 }, ['Eye Armor Trim Smithing Template'] = { pos = 800, section = 41 }, ['Eye Drops'] = { pos = 1752, section = 33 }, ['Eye of Ender'] = { pos = 3565, section = 25 }, ['Fancy Feather'] = { pos = 384, section = 38 }, Farmland = { pos = 886, section = 12 }, Feather = { pos = 3511, section = 23 }, ['Fermented Spider Eye'] = { pos = 3139, section = 3 }, Fermium = { pos = 1805, section = 34 }, Fern = { pos = 3419, section = 19 }, Ferrum = { pos = 1806, section = 34 }, ['Filled Bundle'] = { pos = 429, section = 25 }, ['Finished Nether Reactor Core'] = { pos = 1601, section = 20 }, ['Finished Nether Reactor Core Revision 1'] = { pos = 1598, section = 29 }, ['Fire Charge'] = { pos = 3566, section = 25 }, ['Fire Coral'] = { pos = 1714, section = 15 }, ['Fire Coral Block'] = { pos = 1709, section = 15 }, ['Fire Coral Block Revision 1'] = { pos = 1704, section = 29 }, ['Fire Coral Fan'] = { pos = 1725, section = 15 }, ['Fire Coral Fan Revision 1'] = { pos = 2139, section = 29 }, ['Fire Coral Revision 1'] = { pos = 2140, section = 29 }, ['Firefly Spawn Egg'] = { pos = 632, section = 24 }, ['Firework Loaded Crossbow'] = { pos = 2387, section = 28 }, ['Firework Rocket'] = { pos = 3192, section = 9 }, ['Firework Star'] = { pos = 809, section = 9 }, ['Fishing Rod'] = { pos = 3567, section = 25 }, Flask = { pos = 1906, section = 36 }, Flerovium = { pos = 1807, section = 34 }, ['Fletching Table'] = { pos = 2453, section = 26 }, ['Fletching Table Revision 1'] = { pos = 2444, section = 26 }, Flint = { pos = 3512, section = 23 }, ['Flint and Steel'] = { pos = 3568, section = 25 }, ['Float Tag'] = { pos = 1252, section = 32 }, ['Flower Pot'] = { pos = 3151, section = 5 }, ['Flowering Azalea'] = { pos = 467, section = 19 }, ['Flowering Azalea Leaves'] = { pos = 468, section = 19 }, ['Flowing Lava'] = { pos = 2129, section = 11 }, ['Flowing Lava BE Revision 2'] = { pos = 2130, section = 29 }, ['Flowing Water'] = { pos = 2127, section = 11 }, ['Flowing Water BE'] = { pos = 2128, section = 11 }, ['Flowing Water Revision 2'] = { pos = 851, section = 29 }, Fluorine = { pos = 1808, section = 34 }, Footprint = { pos = 266, section = 32 }, ['Fox Spawn Egg'] = { pos = 2464, section = 24 }, Francium = { pos = 1809, section = 34 }, ['Friend Pottery Sherd'] = { pos = 1226, section = 44 }, ['Frog Spawn'] = { pos = 574, section = 5 }, ['Frog Spawn Egg'] = { pos = 575, section = 24 }, Frogspawn = { pos = 574, section = 5 }, ['Frosted Ice'] = { pos = 984, section = 15 }, Furnace = { pos = 3607, section = 26 }, Gadolinium = { pos = 1810, section = 34 }, Gallium = { pos = 1811, section = 34 }, Garbage = { pos = 1753, section = 33 }, Germanium = { pos = 1812, section = 34 }, ['Ghast Spawn Egg'] = { pos = 1150, section = 24 }, ['Ghast Spawn Egg Revision 1'] = { pos = 1388, section = 39 }, ['Ghast Tear'] = { pos = 3140, section = 3 }, ['Gilded Blackstone'] = { pos = 273, section = 16 }, Glass = { pos = 3263, section = 12 }, ['Glass Bottle'] = { pos = 3569, section = 25 }, ['Glass Pane'] = { pos = 3262, section = 12 }, ['Glass Pane BE'] = { pos = 2025, section = 12 }, ['Glistering Melon'] = { pos = 659, section = 3 }, ['Glistering Melon Slice'] = { pos = 3141, section = 3 }, ['Glow Berries'] = { pos = 460, section = 10 }, ['Glow Ink Sac'] = { pos = 456, section = 23 }, ['Glow Item Frame'] = { pos = 454, section = 5 }, ['Glow Lichen'] = { pos = 455, section = 19 }, ['Glow Squid Spawn Egg'] = { pos = 457, section = 24 }, ['Glowing Obsidian'] = { pos = 1080, section = 20 }, Glowstone = { pos = 3382, section = 16 }, ['Glowstone BE'] = { pos = 210, section = 16 }, ['Glowstone Dust'] = { pos = 3513, section = 23 }, Glue = { pos = 1750, section = 33 }, ['Goat Horn'] = { pos = 390, section = 25 }, ['Goat Spawn Egg'] = { pos = 392, section = 24 }, Gold = { pos = 1779, section = 34 }, ['Gold Heart'] = { pos = 119, section = 32 }, ['Gold Ingot'] = { pos = 3514, section = 23 }, ['Gold Nugget'] = { pos = 3515, section = 23 }, ['Gold Ore'] = { pos = 3394, section = 18 }, ['Gold Trim Chainmail Boots'] = { pos = 973, section = 43 }, ['Gold Trim Chainmail Chestplate'] = { pos = 975, section = 43 }, ['Gold Trim Chainmail Helmet'] = { pos = 976, section = 43 }, ['Gold Trim Chainmail Leggings'] = { pos = 977, section = 43 }, ['Gold Trim Diamond Boots'] = { pos = 978, section = 43 }, ['Gold Trim Diamond Chestplate'] = { pos = 980, section = 43 }, ['Gold Trim Diamond Helmet'] = { pos = 982, section = 43 }, ['Gold Trim Diamond Leggings'] = { pos = 983, section = 43 }, ['Gold Trim Golden Boots'] = { pos = 987, section = 43 }, ['Gold Trim Golden Chestplate'] = { pos = 988, section = 43 }, ['Gold Trim Golden Helmet'] = { pos = 989, section = 43 }, ['Gold Trim Golden Leggings'] = { pos = 990, section = 43 }, ['Gold Trim Iron Boots'] = { pos = 991, section = 43 }, ['Gold Trim Iron Chestplate'] = { pos = 992, section = 43 }, ['Gold Trim Iron Helmet'] = { pos = 993, section = 43 }, ['Gold Trim Iron Leggings'] = { pos = 994, section = 43 }, ['Gold Trim Leather Boots'] = { pos = 995, section = 43 }, ['Gold Trim Leather Cap'] = { pos = 996, section = 43 }, ['Gold Trim Leather Pants'] = { pos = 997, section = 43 }, ['Gold Trim Leather Tunic'] = { pos = 998, section = 43 }, ['Gold Trim Netherite Boots'] = { pos = 1001, section = 43 }, ['Gold Trim Netherite Chestplate'] = { pos = 1002, section = 43 }, ['Gold Trim Netherite Helmet'] = { pos = 1004, section = 43 }, ['Gold Trim Netherite Leggings'] = { pos = 1005, section = 43 }, ['Gold Trim Turtle Shell'] = { pos = 1006, section = 43 }, ['Golden Apple'] = { pos = 3206, section = 10 }, ['Golden Axe'] = { pos = 3570, section = 25 }, ['Golden Boots'] = { pos = 2505, section = 1 }, ['Golden Carrot'] = { pos = 3142, section = 3 }, ['Golden Chestplate'] = { pos = 2506, section = 1 }, ['Golden Helmet'] = { pos = 2507, section = 1 }, ['Golden Hoe'] = { pos = 3571, section = 25 }, ['Golden Horse Armor'] = { pos = 34, section = 1 }, ['Golden Leggings'] = { pos = 2508, section = 1 }, ['Golden Pickaxe'] = { pos = 3572, section = 25 }, ['Golden Shovel'] = { pos = 3573, section = 25 }, ['Golden Sword'] = { pos = 3636, section = 28 }, Granite = { pos = 3364, section = 15 }, ['Granite Slab'] = { pos = 2420, section = 12 }, ['Granite Stairs'] = { pos = 2421, section = 12 }, ['Granite Wall'] = { pos = 2402, section = 12 }, ['Granite Wall BE'] = { pos = 25, section = 12 }, Grass = { pos = 3420, section = 19 }, ['Grass Block'] = { pos = 981, section = 15 }, ['Grass Block Revision 1'] = { pos = 2312, section = 29 }, ['Grass Block Revision 2'] = { pos = 2359, section = 29 }, ['Grass Path'] = { pos = 1348, section = 15 }, Gravel = { pos = 3365, section = 15 }, ['Gray Balloon'] = { pos = 1934, section = 33 }, ['Gray Banner'] = { pos = 728, section = 7 }, ['Gray Banner 15w14a'] = { pos = 476, section = 32 }, ['Gray Base Banner'] = { pos = 2682, section = 2 }, ['Gray Base Dexter Canton Banner'] = { pos = 2683, section = 2 }, ['Gray Base Gradient Banner'] = { pos = 2684, section = 2 }, ['Gray Base Indented Banner'] = { pos = 2685, section = 2 }, ['Gray Base Sinister Canton Banner'] = { pos = 2686, section = 2 }, ['Gray Bed'] = { pos = 3175, section = 7 }, ['Gray Bed BE'] = { pos = 1549, section = 7 }, ['Gray Bed LCE'] = { pos = 1549, section = 7 }, ['Gray Bend Banner'] = { pos = 2687, section = 2 }, ['Gray Bend Sinister Banner'] = { pos = 2688, section = 2 }, ['Gray Bordure Banner'] = { pos = 2689, section = 2 }, ['Gray Bordure Indented Banner'] = { pos = 2690, section = 2 }, ['Gray Candle'] = { pos = 406, section = 7 }, ['Gray Carpet'] = { pos = 1625, section = 7 }, ['Gray Carpet Revision 1'] = { pos = 729, section = 40 }, ['Gray Chevron Banner'] = { pos = 2691, section = 2 }, ['Gray Chief Banner'] = { pos = 2692, section = 2 }, ['Gray Chief Dexter Canton Banner'] = { pos = 2693, section = 2 }, ['Gray Chief Indented Banner'] = { pos = 2694, section = 2 }, ['Gray Chief Sinister Canton Banner'] = { pos = 2695, section = 2 }, ['Gray Concrete'] = { pos = 1487, section = 7 }, ['Gray Concrete Powder'] = { pos = 1488, section = 7 }, ['Gray Creeper Charge Banner'] = { pos = 2696, section = 2 }, ['Gray Cross Banner'] = { pos = 2697, section = 2 }, ['Gray Dye'] = { pos = 3158, section = 6 }, ['Gray Fess Banner'] = { pos = 2698, section = 2 }, ['Gray Field Masoned Banner'] = { pos = 2699, section = 2 }, ['Gray Firework Star'] = { pos = 810, section = 9 }, ['Gray Flower Charge Banner'] = { pos = 2700, section = 2 }, ['Gray Glazed Terracotta'] = { pos = 1489, section = 7 }, ['Gray Globe Banner'] = { pos = 40, section = 2 }, ['Gray Glow Stick'] = { pos = 1980, section = 33 }, ['Gray Gradient Banner'] = { pos = 2701, section = 2 }, ['Gray Inverted Chevron Banner'] = { pos = 2702, section = 2 }, ['Gray Lozenge Banner'] = { pos = 2703, section = 2 }, ['Gray Pale Banner'] = { pos = 2704, section = 2 }, ['Gray Pale Dexter Banner'] = { pos = 2705, section = 2 }, ['Gray Pale Sinister Banner'] = { pos = 2706, section = 2 }, ['Gray Paly Banner'] = { pos = 2707, section = 2 }, ['Gray Per Bend Banner'] = { pos = 2708, section = 2 }, ['Gray Per Bend Inverted Banner'] = { pos = 2709, section = 2 }, ['Gray Per Bend Sinister Banner'] = { pos = 2710, section = 2 }, ['Gray Per Bend Sinister Inverted Banner'] = { pos = 2711, section = 2 }, ['Gray Per Fess Banner'] = { pos = 2712, section = 2 }, ['Gray Per Fess Inverted Banner'] = { pos = 2713, section = 2 }, ['Gray Per Pale Banner'] = { pos = 2714, section = 2 }, ['Gray Per Pale Inverted Banner'] = { pos = 2715, section = 2 }, ['Gray Piglin Banner'] = { pos = 363, section = 2 }, ['Gray Roundel Banner'] = { pos = 2716, section = 2 }, ['Gray Saltire Banner'] = { pos = 2717, section = 2 }, ['Gray Shield'] = { pos = 2509, section = 1 }, ['Gray Shulker Box'] = { pos = 1607, section = 7 }, ['Gray Shulker Box Revision 1'] = { pos = 1420, section = 40 }, ['Gray Skull Charge Banner'] = { pos = 2718, section = 2 }, ['Gray Snout Banner'] = { pos = 363, section = 2 }, ['Gray Stained Glass'] = { pos = 731, section = 7 }, ['Gray Stained Glass Pane'] = { pos = 732, section = 7 }, ['Gray Stained Glass Pane BE'] = { pos = 2012, section = 7 }, ['Gray Terracotta'] = { pos = 730, section = 7 }, ['Gray Thing Banner'] = { pos = 2719, section = 2 }, ['Gray Tinted Glass'] = { pos = 1299, section = 40 }, ['Gray Tinted Glass Pane'] = { pos = 7, section = 40 }, ['Gray Wood Planks'] = { pos = 248, section = 30 }, ['Gray Wool'] = { pos = 1527, section = 7 }, ['Gray Wool Revision 2'] = { pos = 733, section = 40 }, ['Green Balloon'] = { pos = 1935, section = 33 }, ['Green Banner'] = { pos = 734, section = 7 }, ['Green Banner 15w14a'] = { pos = 477, section = 32 }, ['Green Base Banner'] = { pos = 2720, section = 2 }, ['Green Base Dexter Canton Banner'] = { pos = 2721, section = 2 }, ['Green Base Gradient Banner'] = { pos = 2722, section = 2 }, ['Green Base Indented Banner'] = { pos = 2723, section = 2 }, ['Green Base Sinister Canton Banner'] = { pos = 2724, section = 2 }, ['Green Beaker'] = { pos = 1895, section = 35 }, ['Green Bed'] = { pos = 3176, section = 7 }, ['Green Bed BE'] = { pos = 1550, section = 7 }, ['Green Bed LCE'] = { pos = 1550, section = 7 }, ['Green Bend Banner'] = { pos = 2725, section = 2 }, ['Green Bend Sinister Banner'] = { pos = 2726, section = 2 }, ['Green Bordure Banner'] = { pos = 2727, section = 2 }, ['Green Bordure Indented Banner'] = { pos = 2728, section = 2 }, ['Green Candle'] = { pos = 407, section = 7 }, ['Green Carpet'] = { pos = 1626, section = 7 }, ['Green Carpet Revision 1'] = { pos = 735, section = 40 }, ['Green Chevron Banner'] = { pos = 2729, section = 2 }, ['Green Chief Banner'] = { pos = 2730, section = 2 }, ['Green Chief Dexter Canton Banner'] = { pos = 2731, section = 2 }, ['Green Chief Indented Banner'] = { pos = 2732, section = 2 }, ['Green Chief Sinister Canton Banner'] = { pos = 2733, section = 2 }, ['Green Cloth'] = { pos = 231, section = 40 }, ['Green Concrete'] = { pos = 1490, section = 7 }, ['Green Concrete Powder'] = { pos = 1491, section = 7 }, ['Green Creeper Charge Banner'] = { pos = 2734, section = 2 }, ['Green Cross Banner'] = { pos = 2735, section = 2 }, ['Green Dye'] = { pos = 3159, section = 6 }, ['Green Fess Banner'] = { pos = 2736, section = 2 }, ['Green Field Masoned Banner'] = { pos = 2737, section = 2 }, ['Green Firework Star'] = { pos = 811, section = 9 }, ['Green Flask'] = { pos = 1908, section = 36 }, ['Green Flower Charge Banner'] = { pos = 2738, section = 2 }, ['Green Glazed Terracotta'] = { pos = 1492, section = 7 }, ['Green Globe Banner'] = { pos = 41, section = 2 }, ['Green Glow Stick'] = { pos = 1981, section = 33 }, ['Green Gradient Banner'] = { pos = 2739, section = 2 }, ['Green Inverted Chevron Banner'] = { pos = 2740, section = 2 }, ['Green Jar'] = { pos = 1920, section = 37 }, ['Green Lozenge Banner'] = { pos = 2741, section = 2 }, ['Green Pale Banner'] = { pos = 2742, section = 2 }, ['Green Pale Dexter Banner'] = { pos = 2743, section = 2 }, ['Green Pale Sinister Banner'] = { pos = 2744, section = 2 }, ['Green Paly Banner'] = { pos = 2745, section = 2 }, ['Green Per Bend Banner'] = { pos = 2746, section = 2 }, ['Green Per Bend Inverted Banner'] = { pos = 2747, section = 2 }, ['Green Per Bend Sinister Banner'] = { pos = 2748, section = 2 }, ['Green Per Bend Sinister Inverted Banner'] = { pos = 2749, section = 2 }, ['Green Per Fess Banner'] = { pos = 2750, section = 2 }, ['Green Per Fess Inverted Banner'] = { pos = 2751, section = 2 }, ['Green Per Pale Banner'] = { pos = 2752, section = 2 }, ['Green Per Pale Inverted Banner'] = { pos = 2753, section = 2 }, ['Green Piglin Banner'] = { pos = 364, section = 2 }, ['Green Roundel Banner'] = { pos = 2754, section = 2 }, ['Green Saltire Banner'] = { pos = 2755, section = 2 }, ['Green Shield'] = { pos = 2510, section = 1 }, ['Green Shulker Box'] = { pos = 1608, section = 7 }, ['Green Shulker Box Revision 1'] = { pos = 1421, section = 40 }, ['Green Skull Charge Banner'] = { pos = 2756, section = 2 }, ['Green Snout Banner'] = { pos = 364, section = 2 }, ['Green Sparkler'] = { pos = 1754, section = 33 }, ['Green Sparkler (active)'] = { pos = 1755, section = 33 }, ['Green Stained Glass'] = { pos = 737, section = 7 }, ['Green Stained Glass Pane'] = { pos = 738, section = 7 }, ['Green Stained Glass Pane BE'] = { pos = 2013, section = 7 }, ['Green Terracotta'] = { pos = 736, section = 7 }, ['Green Thing Banner'] = { pos = 2757, section = 2 }, ['Green Tinted Glass'] = { pos = 1300, section = 40 }, ['Green Tinted Glass Pane'] = { pos = 8, section = 40 }, ['Green Torch'] = { pos = 1756, section = 33 }, ['Green Wood Planks'] = { pos = 249, section = 30 }, ['Green Wool'] = { pos = 1528, section = 7 }, ['Green Wool Revision 2'] = { pos = 739, section = 40 }, Grindstone = { pos = 2461, section = 26 }, ['Grindstone Revision 1'] = { pos = 2445, section = 26 }, ['Guardian Spawn Egg'] = { pos = 1151, section = 24 }, Gunpowder = { pos = 3516, section = 23 }, Hafnium = { pos = 1813, section = 34 }, ['Half Filled Bundle'] = { pos = 430, section = 25 }, Halogen = { pos = 69, section = 34 }, ['Hanging Roots'] = { pos = 469, section = 19 }, ['Hardened Black Stained Glass'] = { pos = 1950, section = 33 }, ['Hardened Black Stained Glass Pane'] = { pos = 1982, section = 33 }, ['Hardened Blue Stained Glass'] = { pos = 1951, section = 33 }, ['Hardened Blue Stained Glass Pane'] = { pos = 1983, section = 33 }, ['Hardened Brown Stained Glass'] = { pos = 1952, section = 33 }, ['Hardened Brown Stained Glass Pane'] = { pos = 1984, section = 33 }, ['Hardened Cyan Stained Glass'] = { pos = 1953, section = 33 }, ['Hardened Cyan Stained Glass Pane'] = { pos = 1985, section = 33 }, ['Hardened Glass'] = { pos = 1954, section = 33 }, ['Hardened Glass Pane'] = { pos = 1986, section = 33 }, ['Hardened Gray Stained Glass'] = { pos = 1955, section = 33 }, ['Hardened Gray Stained Glass Pane'] = { pos = 1987, section = 33 }, ['Hardened Green Stained Glass'] = { pos = 1956, section = 33 }, ['Hardened Green Stained Glass Pane'] = { pos = 1988, section = 33 }, ['Hardened Light Blue Stained Glass'] = { pos = 1957, section = 33 }, ['Hardened Light Blue Stained Glass Pane'] = { pos = 1989, section = 33 }, ['Hardened Light Gray Stained Glass'] = { pos = 1958, section = 33 }, ['Hardened Light Gray Stained Glass Pane'] = { pos = 1990, section = 33 }, ['Hardened Lime Stained Glass'] = { pos = 1959, section = 33 }, ['Hardened Lime Stained Glass Pane'] = { pos = 1991, section = 33 }, ['Hardened Magenta Stained Glass'] = { pos = 1960, section = 33 }, ['Hardened Magenta Stained Glass Pane'] = { pos = 1992, section = 33 }, ['Hardened Orange Stained Glass'] = { pos = 1961, section = 33 }, ['Hardened Orange Stained Glass Pane'] = { pos = 1993, section = 33 }, ['Hardened Pink Stained Glass'] = { pos = 1962, section = 33 }, ['Hardened Pink Stained Glass Pane'] = { pos = 1994, section = 33 }, ['Hardened Purple Stained Glass'] = { pos = 1963, section = 33 }, ['Hardened Purple Stained Glass Pane'] = { pos = 1995, section = 33 }, ['Hardened Red Stained Glass'] = { pos = 1964, section = 33 }, ['Hardened Red Stained Glass Pane'] = { pos = 1996, section = 33 }, ['Hardened White Stained Glass'] = { pos = 1965, section = 33 }, ['Hardened White Stained Glass Pane'] = { pos = 1997, section = 33 }, ['Hardened Yellow Stained Glass'] = { pos = 1966, section = 33 }, ['Hardened Yellow Stained Glass Pane'] = { pos = 1998, section = 33 }, Hassium = { pos = 1814, section = 34 }, ['Hay Bale'] = { pos = 3264, section = 12 }, Head = { pos = 966, section = 14 }, ['Head BE'] = { pos = 217, section = 14 }, ['Heart of the Sea'] = { pos = 1742, section = 23 }, ['Heart of the Sea Revision 1'] = { pos = 1975, section = 29 }, ['Heart Pottery Sherd'] = { pos = 1227, section = 44 }, ['Heartbreak Pottery Sherd'] = { pos = 1228, section = 44 }, ['Heavy Weighted Pressure Plate'] = { pos = 3335, section = 13 }, ['Heavy Weighted Pressure Plate Revision 1'] = { pos = 2075, section = 29 }, Helium = { pos = 1815, section = 34 }, ['Hoglin Spawn Egg'] = { pos = 194, section = 24 }, ['Hoglin Spawn Egg Revision 1'] = { pos = 1169, section = 29 }, Holmium = { pos = 1816, section = 34 }, ['Honey Block'] = { pos = 107, section = 12 }, ['Honey Block BE'] = { pos = 98, section = 12 }, ['Honey Block BE Revision 1'] = { pos = 101, section = 29 }, ['Honey Block Revision 1'] = { pos = 98, section = 12 }, ['Honey Bottle'] = { pos = 61, section = 10 }, ['Honey Bottle BE'] = { pos = 102, section = 10 }, Honeycomb = { pos = 62, section = 23 }, ['Honeycomb BE Revision 1'] = { pos = 103, section = 29 }, ['Honeycomb Block'] = { pos = 99, section = 12 }, Hopper = { pos = 3608, section = 26 }, ['Hopper Revision 2'] = { pos = 358, section = 29 }, Horn = { pos = 93, section = 38 }, ['Horn Coral'] = { pos = 1715, section = 15 }, ['Horn Coral Block'] = { pos = 1710, section = 15 }, ['Horn Coral Block BE'] = { pos = 1973, section = 15 }, ['Horn Coral Block Revision 1'] = { pos = 1705, section = 29 }, ['Horn Coral Fan'] = { pos = 2134, section = 15 }, ['Horn Coral Fan Revision 1'] = { pos = 1726, section = 29 }, ['Horn Coral Fan Revision 2'] = { pos = 2141, section = 29 }, ['Horned Sheep Spawn Egg'] = { pos = 625, section = 38 }, ['Horse Saddle'] = { pos = 2465, section = 30 }, ['Horse Spawn Egg'] = { pos = 1152, section = 24 }, ['Host Armor Trim'] = { pos = 1214, section = 41 }, ['Host Armor Trim Smithing Template'] = { pos = 1214, section = 41 }, ['Howl Pottery Sherd'] = { pos = 1229, section = 44 }, ['Husk Spawn Egg'] = { pos = 1373, section = 24 }, ['Husk Spawn Egg Revision 1'] = { pos = 1563, section = 39 }, Hydrargyrum = { pos = 1817, section = 34 }, Hydrogen = { pos = 1818, section = 34 }, ['Hydrogen Peroxide'] = { pos = 1889, section = 35 }, Ice = { pos = 3366, section = 15 }, ['Ice Bomb'] = { pos = 1757, section = 33 }, ['Impulse Command Block Revision 1'] = { pos = 1240, section = 29 }, ['Indigo Beaker'] = { pos = 1896, section = 35 }, ['Indigo Flask'] = { pos = 1909, section = 36 }, ['Indigo Jar'] = { pos = 1921, section = 37 }, Indium = { pos = 1819, section = 34 }, ['Infested Chiseled Stone Bricks'] = { pos = 3357, section = 15 }, ['Infested Cobblestone'] = { pos = 3359, section = 12 }, ['Infested Cracked Stone Bricks'] = { pos = 3361, section = 15 }, ['Infested Deepslate'] = { pos = 503, section = 15 }, ['Infested Mossy Stone Bricks'] = { pos = 3368, section = 15 }, ['Infested Stone'] = { pos = 1000, section = 15 }, ['Infested Stone Bricks'] = { pos = 3380, section = 15 }, ['Initialized Nether Reactor Core'] = { pos = 1600, section = 20 }, ['Initialized Nether Reactor Core Revision 1'] = { pos = 1597, section = 29 }, ['Ink Sac'] = { pos = 3160, section = 6 }, ['Int Tag'] = { pos = 1254, section = 32 }, ['Inverted Daylight Detector'] = { pos = 1249, section = 26 }, ['Inverted Daylight Sensor'] = { pos = 1249, section = 26 }, ['Invisible Bedrock'] = { pos = 2151, section = 26 }, Iodine = { pos = 1820, section = 34 }, Iridium = { pos = 1821, section = 34 }, Iron = { pos = 1806, section = 34 }, ['Iron Axe'] = { pos = 3574, section = 25 }, ['Iron Bars'] = { pos = 3265, section = 12 }, ['Iron Bars BE'] = { pos = 2026, section = 12 }, ['Iron Boots'] = { pos = 2511, section = 1 }, ['Iron Chestplate'] = { pos = 2512, section = 1 }, ['Iron Door'] = { pos = 569, section = 13 }, ['Iron Door Revision 2'] = { pos = 941, section = 13 }, ['Iron Golem Spawn Egg'] = { pos = 696, section = 24 }, ['Iron Heart'] = { pos = 120, section = 32 }, ['Iron Helmet'] = { pos = 2513, section = 1 }, ['Iron Hoe'] = { pos = 3575, section = 25 }, ['Iron Horse Armor'] = { pos = 39, section = 1 }, ['Iron Ingot'] = { pos = 3517, section = 23 }, ['Iron Leggings'] = { pos = 2514, section = 1 }, ['Iron Nugget'] = { pos = 3518, section = 23 }, ['Iron Ore'] = { pos = 3395, section = 18 }, ['Iron Pickaxe'] = { pos = 3576, section = 25 }, ['Iron Shovel'] = { pos = 3577, section = 25 }, ['Iron Sulfide'] = { pos = 1916, section = 37 }, ['Iron Sword'] = { pos = 3637, section = 28 }, ['Iron Trapdoor'] = { pos = 942, section = 13 }, ['Iron Trim Chainmail Boots'] = { pos = 1008, section = 43 }, ['Iron Trim Chainmail Chestplate'] = { pos = 1009, section = 43 }, ['Iron Trim Chainmail Helmet'] = { pos = 1012, section = 43 }, ['Iron Trim Chainmail Leggings'] = { pos = 1013, section = 43 }, ['Iron Trim Diamond Boots'] = { pos = 1014, section = 43 }, ['Iron Trim Diamond Chestplate'] = { pos = 1015, section = 43 }, ['Iron Trim Diamond Helmet'] = { pos = 1016, section = 43 }, ['Iron Trim Diamond Leggings'] = { pos = 1017, section = 43 }, ['Iron Trim Golden Boots'] = { pos = 1018, section = 43 }, ['Iron Trim Golden Chestplate'] = { pos = 1019, section = 43 }, ['Iron Trim Golden Helmet'] = { pos = 1020, section = 43 }, ['Iron Trim Golden Leggings'] = { pos = 1021, section = 43 }, ['Iron Trim Iron Boots'] = { pos = 1022, section = 43 }, ['Iron Trim Iron Chestplate'] = { pos = 1023, section = 43 }, ['Iron Trim Iron Helmet'] = { pos = 1024, section = 43 }, ['Iron Trim Iron Leggings'] = { pos = 1025, section = 43 }, ['Iron Trim Leather Boots'] = { pos = 1026, section = 43 }, ['Iron Trim Leather Cap'] = { pos = 1027, section = 43 }, ['Iron Trim Leather Pants'] = { pos = 1028, section = 43 }, ['Iron Trim Leather Tunic'] = { pos = 1029, section = 43 }, ['Iron Trim Netherite Boots'] = { pos = 1030, section = 43 }, ['Iron Trim Netherite Chestplate'] = { pos = 1031, section = 43 }, ['Iron Trim Netherite Helmet'] = { pos = 1032, section = 43 }, ['Iron Trim Netherite Leggings'] = { pos = 1033, section = 43 }, ['Iron Trim Turtle Shell'] = { pos = 1034, section = 43 }, ['Item Frame'] = { pos = 3152, section = 5 }, ["Jack o'Lantern"] = { pos = 3266, section = 12 }, ["Jack o'Lantern BE"] = { pos = 221, section = 12 }, Jar = { pos = 1922, section = 37 }, Jigsaw = { pos = 291, section = 26 }, ['Jigsaw BE'] = { pos = 291, section = 26 }, ['Jigsaw Block'] = { pos = 291, section = 26 }, ['Jigsaw Block BE'] = { pos = 291, section = 26 }, ['Jigsaw Block Revision 1'] = { pos = 2450, section = 29 }, ['Jigsaw Block Revision 2'] = { pos = 2458, section = 29 }, ['Jigsaw Revision 1'] = { pos = 2450, section = 29 }, ['Jigsaw Revision 2'] = { pos = 2458, section = 29 }, Jukebox = { pos = 3609, section = 26 }, ['Jumbo Rabbit Spawn Egg'] = { pos = 626, section = 38 }, ['Jungle Boat'] = { pos = 636, section = 27 }, ['Jungle Boat Revision 2'] = { pos = 3621, section = 29 }, ['Jungle Boat with Chest'] = { pos = 615, section = 27 }, ['Jungle Button'] = { pos = 3336, section = 13 }, ['Jungle Door'] = { pos = 570, section = 13 }, ['Jungle Door Revision 3'] = { pos = 551, section = 29 }, ['Jungle Explorer Map'] = { pos = 1326, section = 25 }, ['Jungle Explorer Map BE'] = { pos = 1327, section = 25 }, ['Jungle Fence'] = { pos = 644, section = 12 }, ['Jungle Fence BE'] = { pos = 3268, section = 12 }, ['Jungle Fence Gate'] = { pos = 3267, section = 13 }, ['Jungle Fence Gate BE'] = { pos = 55, section = 13 }, ['Jungle Hanging Sign'] = { pos = 656, section = 5 }, ['Jungle Leaves'] = { pos = 3421, section = 19 }, ['Jungle Leaves BE'] = { pos = 112, section = 19 }, ['Jungle Log'] = { pos = 3422, section = 19 }, ['Jungle Log Revision 1'] = { pos = 2240, section = 29 }, ['Jungle Planks'] = { pos = 896, section = 12 }, ['Jungle Pressure Plate'] = { pos = 3337, section = 13 }, ['Jungle Sapling'] = { pos = 3423, section = 19 }, ['Jungle Sign'] = { pos = 2395, section = 17 }, ['Jungle Slab'] = { pos = 3269, section = 12 }, ['Jungle Stairs'] = { pos = 3270, section = 12 }, ['Jungle Stairs Left'] = { pos = 2259, section = 42 }, ['Jungle Trapdoor'] = { pos = 1649, section = 13 }, ['Jungle Wood'] = { pos = 3271, section = 12 }, ['Jungle Wood Button'] = { pos = 3336, section = 13 }, ['Jungle Wood Door'] = { pos = 570, section = 13 }, ['Jungle Wood Fence'] = { pos = 644, section = 12 }, ['Jungle Wood Fence Gate'] = { pos = 3267, section = 13 }, ['Jungle Wood Planks'] = { pos = 896, section = 12 }, ['Jungle Wood Pressure Plate'] = { pos = 3337, section = 13 }, ['Jungle Wood Sign'] = { pos = 2395, section = 17 }, ['Jungle Wood Slab'] = { pos = 3269, section = 12 }, ['Jungle Wood Stairs'] = { pos = 3270, section = 12 }, ['Jungle Wood Trapdoor'] = { pos = 1649, section = 13 }, Kalium = { pos = 1822, section = 34 }, Kelp = { pos = 1683, section = 19 }, ['Kelp Revision 1'] = { pos = 1976, section = 29 }, ['Knowledge Book'] = { pos = 3610, section = 26 }, Krypton = { pos = 1823, section = 34 }, ['La Baguette'] = { pos = 1318, section = 32 }, ['Lab Table'] = { pos = 1936, section = 33 }, Ladder = { pos = 3272, section = 12 }, Lantern = { pos = 2451, section = 26 }, Lanthanide = { pos = 70, section = 34 }, Lanthanum = { pos = 1824, section = 34 }, ['Lapis Lazuli'] = { pos = 3161, section = 6 }, ['Lapis Lazuli Block'] = { pos = 3273, section = 12 }, ['Lapis Lazuli Block Revision 1'] = { pos = 2241, section = 29 }, ['Lapis Lazuli Ore'] = { pos = 3396, section = 18 }, ['Lapis Trim Chainmail Boots'] = { pos = 1035, section = 43 }, ['Lapis Trim Chainmail Chestplate'] = { pos = 1036, section = 43 }, ['Lapis Trim Chainmail Helmet'] = { pos = 1037, section = 43 }, ['Lapis Trim Chainmail Leggings'] = { pos = 1038, section = 43 }, ['Lapis Trim Diamond Boots'] = { pos = 1040, section = 43 }, ['Lapis Trim Diamond Chestplate'] = { pos = 1041, section = 43 }, ['Lapis Trim Diamond Helmet'] = { pos = 1042, section = 43 }, ['Lapis Trim Diamond Leggings'] = { pos = 1043, section = 43 }, ['Lapis Trim Golden Boots'] = { pos = 1044, section = 43 }, ['Lapis Trim Golden Chestplate'] = { pos = 1045, section = 43 }, ['Lapis Trim Golden Helmet'] = { pos = 1046, section = 43 }, ['Lapis Trim Golden Leggings'] = { pos = 1047, section = 43 }, ['Lapis Trim Iron Boots'] = { pos = 1048, section = 43 }, ['Lapis Trim Iron Chestplate'] = { pos = 1049, section = 43 }, ['Lapis Trim Iron Helmet'] = { pos = 1051, section = 43 }, ['Lapis Trim Iron Leggings'] = { pos = 1052, section = 43 }, ['Lapis Trim Leather Boots'] = { pos = 1053, section = 43 }, ['Lapis Trim Leather Cap'] = { pos = 1054, section = 43 }, ['Lapis Trim Leather Pants'] = { pos = 1055, section = 43 }, ['Lapis Trim Leather Tunic'] = { pos = 1056, section = 43 }, ['Lapis Trim Netherite Boots'] = { pos = 1057, section = 43 }, ['Lapis Trim Netherite Chestplate'] = { pos = 1058, section = 43 }, ['Lapis Trim Netherite Helmet'] = { pos = 1059, section = 43 }, ['Lapis Trim Netherite Leggings'] = { pos = 1060, section = 43 }, ['Lapis Trim Turtle Shell'] = { pos = 1062, section = 43 }, ['Large Amethyst Bud'] = { pos = 408, section = 15 }, ['Large Fern'] = { pos = 3424, section = 19 }, Latex = { pos = 1897, section = 35 }, Lava = { pos = 2129, section = 11 }, ['Lava BE Revision 2'] = { pos = 2130, section = 29 }, ['Lava Block'] = { pos = 2119, section = 29 }, ['Lava Bucket'] = { pos = 3147, section = 4 }, Lawrencium = { pos = 1825, section = 34 }, ['Le Tricolore'] = { pos = 1319, section = 32 }, Lead = { pos = 3578, section = 25 }, ['Lead (element)'] = { pos = 1826, section = 34 }, Leather = { pos = 3519, section = 23 }, ['Leather Boots'] = { pos = 2515, section = 1 }, ['Leather Boots Revision 1'] = { pos = 2076, section = 29 }, ['Leather Boots Revision 2'] = { pos = 2077, section = 29 }, ['Leather Cap'] = { pos = 2516, section = 1 }, ['Leather Cap Revision 1'] = { pos = 2078, section = 29 }, ['Leather Cap Revision 2'] = { pos = 2079, section = 29 }, ['Leather Horse Armor'] = { pos = 1382, section = 1 }, ['Leather Horse Armor BE'] = { pos = 378, section = 1 }, ['Leather Pants'] = { pos = 2517, section = 1 }, ['Leather Pants Revision 1'] = { pos = 2080, section = 29 }, ['Leather Pants Revision 2'] = { pos = 2081, section = 29 }, ['Leather Tunic'] = { pos = 2518, section = 1 }, ['Leather Tunic Revision 1'] = { pos = 2082, section = 29 }, ['Leather Tunic Revision 2'] = { pos = 2083, section = 29 }, Lectern = { pos = 19, section = 13 }, ['Lectern Revision 1'] = { pos = 2434, section = 29 }, ['Left Curly'] = { pos = 1255, section = 32 }, ['Left Square'] = { pos = 1256, section = 32 }, Lever = { pos = 3338, section = 13 }, ['Light 0'] = { pos = 525, section = 26 }, ['Light 1'] = { pos = 526, section = 26 }, ['Light 10'] = { pos = 527, section = 26 }, ['Light 11'] = { pos = 528, section = 26 }, ['Light 12'] = { pos = 529, section = 26 }, ['Light 13'] = { pos = 530, section = 26 }, ['Light 14'] = { pos = 531, section = 26 }, ['Light 15'] = { pos = 532, section = 26 }, ['Light 2'] = { pos = 533, section = 26 }, ['Light 3'] = { pos = 534, section = 26 }, ['Light 4'] = { pos = 535, section = 26 }, ['Light 5'] = { pos = 536, section = 26 }, ['Light 6'] = { pos = 537, section = 26 }, ['Light 7'] = { pos = 538, section = 26 }, ['Light 8'] = { pos = 539, section = 26 }, ['Light 9'] = { pos = 540, section = 26 }, ['Light Block 0'] = { pos = 76, section = 26 }, ['Light Block 1'] = { pos = 77, section = 26 }, ['Light Block 10'] = { pos = 78, section = 26 }, ['Light Block 11'] = { pos = 79, section = 26 }, ['Light Block 12'] = { pos = 80, section = 26 }, ['Light Block 13'] = { pos = 81, section = 26 }, ['Light Block 14'] = { pos = 82, section = 26 }, ['Light Block 15'] = { pos = 83, section = 26 }, ['Light Block 2'] = { pos = 84, section = 26 }, ['Light Block 3'] = { pos = 85, section = 26 }, ['Light Block 4'] = { pos = 86, section = 26 }, ['Light Block 5'] = { pos = 87, section = 26 }, ['Light Block 6'] = { pos = 88, section = 26 }, ['Light Block 7'] = { pos = 89, section = 26 }, ['Light Block 8'] = { pos = 90, section = 26 }, ['Light Block 9'] = { pos = 91, section = 26 }, ['Light Blue Balloon'] = { pos = 1937, section = 33 }, ['Light Blue Banner'] = { pos = 740, section = 7 }, ['Light Blue Banner 15w14a'] = { pos = 478, section = 32 }, ['Light Blue Base Banner'] = { pos = 2758, section = 2 }, ['Light Blue Base Dexter Canton Banner'] = { pos = 2759, section = 2 }, ['Light Blue Base Gradient Banner'] = { pos = 2760, section = 2 }, ['Light Blue Base Indented Banner'] = { pos = 2761, section = 2 }, ['Light Blue Base Sinister Canton Banner'] = { pos = 2762, section = 2 }, ['Light Blue Bed'] = { pos = 3177, section = 7 }, ['Light Blue Bed BE'] = { pos = 1551, section = 7 }, ['Light Blue Bed LCE'] = { pos = 1551, section = 7 }, ['Light Blue Bend Banner'] = { pos = 2763, section = 2 }, ['Light Blue Bend Sinister Banner'] = { pos = 2764, section = 2 }, ['Light Blue Bordure Banner'] = { pos = 2765, section = 2 }, ['Light Blue Bordure Indented Banner'] = { pos = 2766, section = 2 }, ['Light Blue Candle'] = { pos = 409, section = 7 }, ['Light Blue Carpet'] = { pos = 1627, section = 7 }, ['Light Blue Carpet Revision 1'] = { pos = 741, section = 40 }, ['Light Blue Chevron Banner'] = { pos = 2767, section = 2 }, ['Light Blue Chief Banner'] = { pos = 2768, section = 2 }, ['Light Blue Chief Dexter Canton Banner'] = { pos = 2769, section = 2 }, ['Light Blue Chief Indented Banner'] = { pos = 2770, section = 2 }, ['Light Blue Chief Sinister Canton Banner'] = { pos = 2771, section = 2 }, ['Light Blue Concrete'] = { pos = 1493, section = 7 }, ['Light Blue Concrete Powder'] = { pos = 1494, section = 7 }, ['Light Blue Creeper Charge Banner'] = { pos = 2772, section = 2 }, ['Light Blue Cross Banner'] = { pos = 2773, section = 2 }, ['Light Blue Dye'] = { pos = 3162, section = 6 }, ['Light Blue Fess Banner'] = { pos = 2774, section = 2 }, ['Light Blue Field Masoned Banner'] = { pos = 2775, section = 2 }, ['Light Blue Firework Star'] = { pos = 812, section = 9 }, ['Light Blue Flower Charge Banner'] = { pos = 2776, section = 2 }, ['Light Blue Glazed Terracotta'] = { pos = 1495, section = 7 }, ['Light Blue Globe Banner'] = { pos = 42, section = 2 }, ['Light Blue Glow Stick'] = { pos = 1999, section = 33 }, ['Light Blue Gradient Banner'] = { pos = 2777, section = 2 }, ['Light Blue Inverted Chevron Banner'] = { pos = 2778, section = 2 }, ['Light Blue Lozenge Banner'] = { pos = 2779, section = 2 }, ['Light Blue Pale Banner'] = { pos = 2780, section = 2 }, ['Light Blue Pale Dexter Banner'] = { pos = 2781, section = 2 }, ['Light Blue Pale Sinister Banner'] = { pos = 2782, section = 2 }, ['Light Blue Paly Banner'] = { pos = 2783, section = 2 }, ['Light Blue Per Bend Banner'] = { pos = 2784, section = 2 }, ['Light Blue Per Bend Inverted Banner'] = { pos = 2785, section = 2 }, ['Light Blue Per Bend Sinister Banner'] = { pos = 2786, section = 2 }, ['Light Blue Per Bend Sinister Inverted Banner'] = { pos = 2787, section = 2 }, ['Light Blue Per Fess Banner'] = { pos = 2788, section = 2 }, ['Light Blue Per Fess Inverted Banner'] = { pos = 2789, section = 2 }, ['Light Blue Per Pale Banner'] = { pos = 2790, section = 2 }, ['Light Blue Per Pale Inverted Banner'] = { pos = 2791, section = 2 }, ['Light Blue Piglin Banner'] = { pos = 365, section = 2 }, ['Light Blue Roundel Banner'] = { pos = 2792, section = 2 }, ['Light Blue Saltire Banner'] = { pos = 2793, section = 2 }, ['Light Blue Shield'] = { pos = 2519, section = 1 }, ['Light Blue Shulker Box'] = { pos = 1609, section = 7 }, ['Light Blue Shulker Box Revision 1'] = { pos = 1422, section = 40 }, ['Light Blue Skull Charge Banner'] = { pos = 2794, section = 2 }, ['Light Blue Snout Banner'] = { pos = 365, section = 2 }, ['Light Blue Stained Glass'] = { pos = 743, section = 7 }, ['Light Blue Stained Glass Pane'] = { pos = 744, section = 7 }, ['Light Blue Stained Glass Pane BE'] = { pos = 2014, section = 7 }, ['Light Blue Terracotta'] = { pos = 742, section = 7 }, ['Light Blue Thing Banner'] = { pos = 2795, section = 2 }, ['Light Blue Tinted Glass'] = { pos = 1302, section = 40 }, ['Light Blue Tinted Glass Pane'] = { pos = 9, section = 40 }, ['Light Blue Wood Planks'] = { pos = 250, section = 30 }, ['Light Blue Wool'] = { pos = 1529, section = 7 }, ['Light Blue Wool Revision 2'] = { pos = 745, section = 40 }, ['Light Gray Balloon'] = { pos = 1945, section = 33 }, ['Light Gray Banner'] = { pos = 746, section = 7 }, ['Light Gray Banner 15w14a'] = { pos = 479, section = 32 }, ['Light Gray Base Banner'] = { pos = 2796, section = 2 }, ['Light Gray Base Dexter Canton Banner'] = { pos = 2797, section = 2 }, ['Light Gray Base Gradient Banner'] = { pos = 2798, section = 2 }, ['Light Gray Base Indented Banner'] = { pos = 2799, section = 2 }, ['Light Gray Base Sinister Canton Banner'] = { pos = 2800, section = 2 }, ['Light Gray Beaker'] = { pos = 1898, section = 35 }, ['Light Gray Bed'] = { pos = 3178, section = 7 }, ['Light Gray Bed BE'] = { pos = 1552, section = 7 }, ['Light Gray Bed LCE'] = { pos = 1552, section = 7 }, ['Light Gray Bend Banner'] = { pos = 2801, section = 2 }, ['Light Gray Bend Sinister Banner'] = { pos = 2802, section = 2 }, ['Light Gray Bordure Banner'] = { pos = 2803, section = 2 }, ['Light Gray Bordure Indented Banner'] = { pos = 2804, section = 2 }, ['Light Gray Candle'] = { pos = 410, section = 7 }, ['Light Gray Carpet'] = { pos = 1628, section = 7 }, ['Light Gray Carpet Revision 1'] = { pos = 747, section = 40 }, ['Light Gray Chevron Banner'] = { pos = 2805, section = 2 }, ['Light Gray Chief Banner'] = { pos = 2806, section = 2 }, ['Light Gray Chief Dexter Canton Banner'] = { pos = 2807, section = 2 }, ['Light Gray Chief Indented Banner'] = { pos = 2808, section = 2 }, ['Light Gray Chief Sinister Canton Banner'] = { pos = 2809, section = 2 }, ['Light Gray Cloth'] = { pos = 233, section = 40 }, ['Light Gray Concrete'] = { pos = 1496, section = 7 }, ['Light Gray Concrete Powder'] = { pos = 1497, section = 7 }, ['Light Gray Creeper Charge Banner'] = { pos = 2810, section = 2 }, ['Light Gray Cross Banner'] = { pos = 2811, section = 2 }, ['Light Gray Dye'] = { pos = 3163, section = 6 }, ['Light Gray Fess Banner'] = { pos = 2812, section = 2 }, ['Light Gray Field Masoned Banner'] = { pos = 2813, section = 2 }, ['Light Gray Firework Star'] = { pos = 813, section = 9 }, ['Light Gray Flask'] = { pos = 1910, section = 36 }, ['Light Gray Flower Charge Banner'] = { pos = 2814, section = 2 }, ['Light Gray Glazed Terracotta'] = { pos = 1498, section = 7 }, ['Light Gray Globe Banner'] = { pos = 43, section = 2 }, ['Light Gray Gradient Banner'] = { pos = 2815, section = 2 }, ['Light Gray Inverted Chevron Banner'] = { pos = 2816, section = 2 }, ['Light Gray Jar'] = { pos = 1923, section = 37 }, ['Light Gray Lozenge Banner'] = { pos = 2817, section = 2 }, ['Light Gray Pale Banner'] = { pos = 2818, section = 2 }, ['Light Gray Pale Dexter Banner'] = { pos = 2819, section = 2 }, ['Light Gray Pale Sinister Banner'] = { pos = 2820, section = 2 }, ['Light Gray Paly Banner'] = { pos = 2821, section = 2 }, ['Light Gray Per Bend Banner'] = { pos = 2822, section = 2 }, ['Light Gray Per Bend Inverted Banner'] = { pos = 2823, section = 2 }, ['Light Gray Per Bend Sinister Banner'] = { pos = 2824, section = 2 }, ['Light Gray Per Bend Sinister Inverted Banner'] = { pos = 2825, section = 2 }, ['Light Gray Per Fess Banner'] = { pos = 2826, section = 2 }, ['Light Gray Per Fess Inverted Banner'] = { pos = 2827, section = 2 }, ['Light Gray Per Pale Banner'] = { pos = 2828, section = 2 }, ['Light Gray Per Pale Inverted Banner'] = { pos = 2829, section = 2 }, ['Light Gray Piglin Banner'] = { pos = 366, section = 2 }, ['Light Gray Roundel Banner'] = { pos = 2830, section = 2 }, ['Light Gray Saltire Banner'] = { pos = 2831, section = 2 }, ['Light Gray Shield'] = { pos = 2520, section = 1 }, ['Light Gray Shulker Box'] = { pos = 1610, section = 7 }, ['Light Gray Shulker Box Revision 1'] = { pos = 1423, section = 40 }, ['Light Gray Skull Charge Banner'] = { pos = 2832, section = 2 }, ['Light Gray Snout Banner'] = { pos = 366, section = 2 }, ['Light Gray Stained Glass'] = { pos = 749, section = 7 }, ['Light Gray Stained Glass Pane'] = { pos = 750, section = 7 }, ['Light Gray Stained Glass Pane BE'] = { pos = 2015, section = 7 }, ['Light Gray Terracotta'] = { pos = 748, section = 7 }, ['Light Gray Thing Banner'] = { pos = 2833, section = 2 }, ['Light Gray Tinted Glass'] = { pos = 1303, section = 40 }, ['Light Gray Tinted Glass Pane'] = { pos = 10, section = 40 }, ['Light Gray Wood Planks'] = { pos = 251, section = 30 }, ['Light Gray Wool'] = { pos = 1530, section = 7 }, ['Light Gray Wool Revision 2'] = { pos = 751, section = 40 }, ['Light Negative'] = { pos = 541, section = 26 }, ['Light Weighted Pressure Plate'] = { pos = 3339, section = 13 }, ['Light Weighted Pressure Plate Revision 1'] = { pos = 2084, section = 29 }, ['Lightning Rod'] = { pos = 415, section = 26 }, Lilac = { pos = 3425, section = 19 }, ['Lily of the Valley'] = { pos = 2390, section = 19 }, ['Lily Pad'] = { pos = 3426, section = 19 }, ['Lime Balloon'] = { pos = 1938, section = 33 }, ['Lime Banner'] = { pos = 752, section = 7 }, ['Lime Banner 15w14a'] = { pos = 480, section = 32 }, ['Lime Base Banner'] = { pos = 2834, section = 2 }, ['Lime Base Dexter Canton Banner'] = { pos = 2835, section = 2 }, ['Lime Base Gradient Banner'] = { pos = 2836, section = 2 }, ['Lime Base Indented Banner'] = { pos = 2837, section = 2 }, ['Lime Base Sinister Canton Banner'] = { pos = 2838, section = 2 }, ['Lime Bed'] = { pos = 3179, section = 7 }, ['Lime Bed BE'] = { pos = 1553, section = 7 }, ['Lime Bed LCE'] = { pos = 1553, section = 7 }, ['Lime Bend Banner'] = { pos = 2839, section = 2 }, ['Lime Bend Sinister Banner'] = { pos = 2840, section = 2 }, ['Lime Bordure Banner'] = { pos = 2841, section = 2 }, ['Lime Bordure Indented Banner'] = { pos = 2842, section = 2 }, ['Lime Candle'] = { pos = 416, section = 7 }, ['Lime Carpet'] = { pos = 1629, section = 7 }, ['Lime Carpet Revision 1'] = { pos = 753, section = 40 }, ['Lime Chevron Banner'] = { pos = 2843, section = 2 }, ['Lime Chief Banner'] = { pos = 2844, section = 2 }, ['Lime Chief Dexter Canton Banner'] = { pos = 2845, section = 2 }, ['Lime Chief Indented Banner'] = { pos = 2846, section = 2 }, ['Lime Chief Sinister Canton Banner'] = { pos = 2847, section = 2 }, ['Lime Concrete'] = { pos = 1499, section = 7 }, ['Lime Concrete Powder'] = { pos = 1500, section = 7 }, ['Lime Creeper Charge Banner'] = { pos = 2848, section = 2 }, ['Lime Cross Banner'] = { pos = 2849, section = 2 }, ['Lime Dye'] = { pos = 3164, section = 6 }, ['Lime Fess Banner'] = { pos = 2850, section = 2 }, ['Lime Field Masoned Banner'] = { pos = 2851, section = 2 }, ['Lime Firework Star'] = { pos = 814, section = 9 }, ['Lime Flower Charge Banner'] = { pos = 2852, section = 2 }, ['Lime Glazed Terracotta'] = { pos = 1501, section = 7 }, ['Lime Globe Banner'] = { pos = 44, section = 2 }, ['Lime Glow Stick'] = { pos = 2000, section = 33 }, ['Lime Gradient Banner'] = { pos = 2853, section = 2 }, ['Lime Inverted Chevron Banner'] = { pos = 2854, section = 2 }, ['Lime Lozenge Banner'] = { pos = 2855, section = 2 }, ['Lime Pale Banner'] = { pos = 2856, section = 2 }, ['Lime Pale Dexter Banner'] = { pos = 2857, section = 2 }, ['Lime Pale Sinister Banner'] = { pos = 2858, section = 2 }, ['Lime Paly Banner'] = { pos = 2859, section = 2 }, ['Lime Per Bend Banner'] = { pos = 2860, section = 2 }, ['Lime Per Bend Inverted Banner'] = { pos = 2861, section = 2 }, ['Lime Per Bend Sinister Banner'] = { pos = 2862, section = 2 }, ['Lime Per Bend Sinister Inverted Banner'] = { pos = 2863, section = 2 }, ['Lime Per Fess Banner'] = { pos = 2864, section = 2 }, ['Lime Per Fess Inverted Banner'] = { pos = 2865, section = 2 }, ['Lime Per Pale Banner'] = { pos = 2866, section = 2 }, ['Lime Per Pale Inverted Banner'] = { pos = 2867, section = 2 }, ['Lime Piglin Banner'] = { pos = 367, section = 2 }, ['Lime Roundel Banner'] = { pos = 2868, section = 2 }, ['Lime Saltire Banner'] = { pos = 2869, section = 2 }, ['Lime Shield'] = { pos = 2521, section = 1 }, ['Lime Shulker Box'] = { pos = 1611, section = 7 }, ['Lime Shulker Box Revision 1'] = { pos = 1424, section = 40 }, ['Lime Skull Charge Banner'] = { pos = 2870, section = 2 }, ['Lime Snout Banner'] = { pos = 367, section = 2 }, ['Lime Stained Glass'] = { pos = 755, section = 7 }, ['Lime Stained Glass Pane'] = { pos = 756, section = 7 }, ['Lime Stained Glass Pane BE'] = { pos = 2016, section = 7 }, ['Lime Terracotta'] = { pos = 754, section = 7 }, ['Lime Thing Banner'] = { pos = 2871, section = 2 }, ['Lime Tinted Glass'] = { pos = 1304, section = 40 }, ['Lime Tinted Glass Pane'] = { pos = 11, section = 40 }, ['Lime Wood Planks'] = { pos = 252, section = 30 }, ['Lime Wool'] = { pos = 1531, section = 7 }, ['Lime Wool Revision 2'] = { pos = 757, section = 40 }, ['Lingering Awkward Potion Revision 1'] = { pos = 312, section = 46 }, ['Lingering Mundane Potion Revision 1'] = { pos = 313, section = 46 }, ['Lingering Potion of Big'] = { pos = 1258, section = 32 }, ['Lingering Potion of Decay'] = { pos = 1406, section = 31 }, ['Lingering Potion of Fire Resistance'] = { pos = 3484, section = 31 }, ['Lingering Potion of Fire Resistance Revision 1'] = { pos = 314, section = 46 }, ['Lingering Potion of Harming'] = { pos = 3485, section = 31 }, ['Lingering Potion of Harming Revision 1'] = { pos = 315, section = 46 }, ['Lingering Potion of Healing'] = { pos = 3486, section = 31 }, ['Lingering Potion of Healing Revision 1'] = { pos = 316, section = 46 }, ['Lingering Potion of Invisibility'] = { pos = 3487, section = 31 }, ['Lingering Potion of Invisibility Revision 1'] = { pos = 317, section = 46 }, ['Lingering Potion of Leaping'] = { pos = 3488, section = 31 }, ['Lingering Potion of Leaping Revision 1'] = { pos = 318, section = 46 }, ['Lingering Potion of Levitation'] = { pos = 116, section = 31 }, ['Lingering Potion of Luck'] = { pos = 3489, section = 31 }, ['Lingering Potion of Luck Revision 1'] = { pos = 319, section = 46 }, ['Lingering Potion of Night Vision'] = { pos = 3490, section = 31 }, ['Lingering Potion of Night Vision Revision 1'] = { pos = 320, section = 46 }, ['Lingering Potion of Poison'] = { pos = 3491, section = 31 }, ['Lingering Potion of Poison Revision 1'] = { pos = 321, section = 46 }, ['Lingering Potion of Regeneration'] = { pos = 3492, section = 31 }, ['Lingering Potion of Regeneration Revision 1'] = { pos = 322, section = 46 }, ['Lingering Potion of Slow Falling'] = { pos = 3493, section = 31 }, ['Lingering Potion of Slow Falling Revision 1'] = { pos = 323, section = 46 }, ['Lingering Potion of Slowness'] = { pos = 3494, section = 31 }, ['Lingering Potion of Slowness Revision 1'] = { pos = 324, section = 46 }, ['Lingering Potion of Small'] = { pos = 1260, section = 32 }, ['Lingering Potion of Strength'] = { pos = 3495, section = 31 }, ['Lingering Potion of Strength Revision 1'] = { pos = 325, section = 46 }, ['Lingering Potion of Swiftness'] = { pos = 3496, section = 31 }, ['Lingering Potion of Swiftness Revision 1'] = { pos = 326, section = 46 }, ['Lingering Potion of the Turtle Master'] = { pos = 3497, section = 31 }, ['Lingering Potion of the Turtle Master Revision 1'] = { pos = 327, section = 46 }, ['Lingering Potion of Water Breathing'] = { pos = 3498, section = 31 }, ['Lingering Potion of Water Breathing Revision 1'] = { pos = 328, section = 46 }, ['Lingering Potion of Weakness'] = { pos = 3499, section = 31 }, ['Lingering Thick Potion Revision 1'] = { pos = 329, section = 46 }, ['Lingering Uncraftable Potion Revision 1'] = { pos = 330, section = 46 }, ['Lingering Water Bottle'] = { pos = 3501, section = 31 }, ['Lingering Water Bottle Revision 1'] = { pos = 331, section = 46 }, ['List Tag'] = { pos = 1261, section = 32 }, ['Lit Deepslate Redstone Ore BE'] = { pos = 565, section = 18 }, ['Lit Redstone Lamp Post-Flip'] = { pos = 380, section = 29 }, ['Lit Redstone Ore'] = { pos = 2171, section = 29 }, ['Lit Redstone Ore BE'] = { pos = 564, section = 18 }, Lithium = { pos = 1827, section = 34 }, ['Lithium Hydride'] = { pos = 1915, section = 37 }, Livermorium = { pos = 1828, section = 34 }, ['Llama Spawn Egg'] = { pos = 1412, section = 24 }, ['Locked chest'] = { pos = 1251, section = 29 }, ['Locked Chest 12w19a'] = { pos = 1317, section = 30 }, ['Locked Chest 12w22a'] = { pos = 1305, section = 30 }, ['Locked Chest 13w01a'] = { pos = 553, section = 30 }, ['Locked Chest 13w03a'] = { pos = 554, section = 30 }, ['Locked Chest 13w18a'] = { pos = 1306, section = 30 }, ['Locked Map'] = { pos = 131, section = 25 }, Lodestone = { pos = 222, section = 12 }, ['Lodestone Compass'] = { pos = 577, section = 25 }, ['Lodestone-Compass'] = { pos = 577, section = 25 }, ['Long Tag'] = { pos = 1262, section = 32 }, ['Longer String'] = { pos = 1322, section = 32 }, Loom = { pos = 2446, section = 26 }, ['Loom Revision 1'] = { pos = 20, section = 26 }, Luminol = { pos = 1922, section = 37 }, Lutetium = { pos = 1829, section = 34 }, Lye = { pos = 1915, section = 37 }, ['Magenta Balloon'] = { pos = 1939, section = 33 }, ['Magenta Banner'] = { pos = 758, section = 7 }, ['Magenta Banner 15w14a'] = { pos = 481, section = 32 }, ['Magenta Base Banner'] = { pos = 2872, section = 2 }, ['Magenta Base Dexter Canton Banner'] = { pos = 2873, section = 2 }, ['Magenta Base Gradient Banner'] = { pos = 2874, section = 2 }, ['Magenta Base Indented Banner'] = { pos = 2875, section = 2 }, ['Magenta Base Sinister Canton Banner'] = { pos = 2876, section = 2 }, ['Magenta Bed'] = { pos = 3180, section = 7 }, ['Magenta Bed BE'] = { pos = 1554, section = 7 }, ['Magenta Bed LCE'] = { pos = 1554, section = 7 }, ['Magenta Bend Banner'] = { pos = 2877, section = 2 }, ['Magenta Bend Sinister Banner'] = { pos = 2878, section = 2 }, ['Magenta Bordure Banner'] = { pos = 2879, section = 2 }, ['Magenta Bordure Indented Banner'] = { pos = 2880, section = 2 }, ['Magenta Candle'] = { pos = 417, section = 7 }, ['Magenta Carpet'] = { pos = 1630, section = 7 }, ['Magenta Carpet Revision 1'] = { pos = 759, section = 40 }, ['Magenta Chevron Banner'] = { pos = 2881, section = 2 }, ['Magenta Chief Banner'] = { pos = 2882, section = 2 }, ['Magenta Chief Dexter Canton Banner'] = { pos = 2883, section = 2 }, ['Magenta Chief Indented Banner'] = { pos = 2884, section = 2 }, ['Magenta Chief Sinister Canton Banner'] = { pos = 2885, section = 2 }, ['Magenta Cloth'] = { pos = 235, section = 40 }, ['Magenta Concrete'] = { pos = 1502, section = 7 }, ['Magenta Concrete Powder'] = { pos = 1503, section = 7 }, ['Magenta Creeper Charge Banner'] = { pos = 2886, section = 2 }, ['Magenta Cross Banner'] = { pos = 2887, section = 2 }, ['Magenta Dye'] = { pos = 3165, section = 6 }, ['Magenta Fess Banner'] = { pos = 2888, section = 2 }, ['Magenta Field Masoned Banner'] = { pos = 2889, section = 2 }, ['Magenta Firework Star'] = { pos = 815, section = 9 }, ['Magenta Flower Charge Banner'] = { pos = 2890, section = 2 }, ['Magenta Glazed Terracotta'] = { pos = 1541, section = 7 }, ['Magenta Glazed Terracotta Revision 1'] = { pos = 1504, section = 40 }, ['Magenta Globe Banner'] = { pos = 45, section = 2 }, ['Magenta Glow Stick'] = { pos = 2001, section = 33 }, ['Magenta Gradient Banner'] = { pos = 2891, section = 2 }, ['Magenta Inverted Chevron Banner'] = { pos = 2892, section = 2 }, ['Magenta Lozenge Banner'] = { pos = 2893, section = 2 }, ['Magenta Pale Banner'] = { pos = 2894, section = 2 }, ['Magenta Pale Dexter Banner'] = { pos = 2895, section = 2 }, ['Magenta Pale Sinister Banner'] = { pos = 2896, section = 2 }, ['Magenta Paly Banner'] = { pos = 2897, section = 2 }, ['Magenta Per Bend Banner'] = { pos = 2898, section = 2 }, ['Magenta Per Bend Inverted Banner'] = { pos = 2899, section = 2 }, ['Magenta Per Bend Sinister Banner'] = { pos = 2900, section = 2 }, ['Magenta Per Bend Sinister Inverted Banner'] = { pos = 2901, section = 2 }, ['Magenta Per Fess Banner'] = { pos = 2902, section = 2 }, ['Magenta Per Fess Inverted Banner'] = { pos = 2903, section = 2 }, ['Magenta Per Pale Banner'] = { pos = 2904, section = 2 }, ['Magenta Per Pale Inverted Banner'] = { pos = 2905, section = 2 }, ['Magenta Piglin Banner'] = { pos = 368, section = 2 }, ['Magenta Roundel Banner'] = { pos = 2906, section = 2 }, ['Magenta Saltire Banner'] = { pos = 2907, section = 2 }, ['Magenta Shield'] = { pos = 2522, section = 1 }, ['Magenta Shulker Box'] = { pos = 1612, section = 7 }, ['Magenta Shulker Box Revision 1'] = { pos = 1425, section = 40 }, ['Magenta Skull Charge Banner'] = { pos = 2908, section = 2 }, ['Magenta Snout Banner'] = { pos = 368, section = 2 }, ['Magenta Stained Glass'] = { pos = 761, section = 7 }, ['Magenta Stained Glass Pane'] = { pos = 762, section = 7 }, ['Magenta Stained Glass Pane BE'] = { pos = 2017, section = 7 }, ['Magenta Terracotta'] = { pos = 760, section = 7 }, ['Magenta Thing Banner'] = { pos = 2909, section = 2 }, ['Magenta Tinted Glass'] = { pos = 1307, section = 40 }, ['Magenta Tinted Glass Pane'] = { pos = 12, section = 40 }, ['Magenta Wood Planks'] = { pos = 253, section = 30 }, ['Magenta Wool'] = { pos = 1532, section = 7 }, ['Magenta Wool Revision 2'] = { pos = 763, section = 40 }, ['Magma Block BE'] = { pos = 510, section = 16 }, ['Magma Cream'] = { pos = 3143, section = 3 }, ['Magma Cube Spawn Egg'] = { pos = 1153, section = 24 }, ['Magma Cube Spawn Egg Revision 1'] = { pos = 1389, section = 39 }, Magnesium = { pos = 1830, section = 34 }, ['Magnesium Nitrate'] = { pos = 1924, section = 37 }, ['Magnesium Oxide'] = { pos = 1915, section = 37 }, Manganese = { pos = 1831, section = 34 }, ['Mangrove Boat'] = { pos = 639, section = 27 }, ['Mangrove Boat with Chest'] = { pos = 618, section = 27 }, ['Mangrove Button'] = { pos = 599, section = 13 }, ['Mangrove Door'] = { pos = 600, section = 13 }, ['Mangrove Fence'] = { pos = 647, section = 12 }, ['Mangrove Fence BE'] = { pos = 585, section = 12 }, ['Mangrove Fence Gate'] = { pos = 586, section = 12 }, ['Mangrove Hanging Sign'] = { pos = 657, section = 5 }, ['Mangrove Leaves'] = { pos = 605, section = 19 }, ['Mangrove Log'] = { pos = 606, section = 19 }, ['Mangrove Planks'] = { pos = 587, section = 12 }, ['Mangrove Pressure Plate'] = { pos = 601, section = 13 }, ['Mangrove Propagule'] = { pos = 607, section = 19 }, ['Mangrove Roots'] = { pos = 608, section = 19 }, ['Mangrove Sign'] = { pos = 604, section = 17 }, ['Mangrove Slab'] = { pos = 588, section = 12 }, ['Mangrove Stairs'] = { pos = 589, section = 12 }, ['Mangrove Trapdoor'] = { pos = 602, section = 13 }, ['Mangrove Wood'] = { pos = 590, section = 12 }, ['Mangrove Wood Button'] = { pos = 599, section = 13 }, ['Mangrove Wood Door'] = { pos = 600, section = 13 }, ['Mangrove Wood Fence'] = { pos = 647, section = 12 }, ['Mangrove Wood Fence BE'] = { pos = 585, section = 12 }, ['Mangrove Wood Fence Gate'] = { pos = 586, section = 12 }, ['Mangrove Wood Planks'] = { pos = 587, section = 12 }, ['Mangrove Wood Pressure Plate'] = { pos = 601, section = 13 }, ['Mangrove Wood Sign'] = { pos = 604, section = 17 }, ['Mangrove Wood Slab'] = { pos = 588, section = 12 }, ['Mangrove Wood Stairs'] = { pos = 589, section = 12 }, ['Mangrove Wood Trapdoor'] = { pos = 602, section = 13 }, Map = { pos = 3579, section = 25 }, ['Map BE'] = { pos = 124, section = 25 }, ['Material Reducer'] = { pos = 1940, section = 33 }, ['Medium Amethyst Bud'] = { pos = 418, section = 15 }, Meitnerium = { pos = 1832, section = 34 }, Melon = { pos = 3427, section = 19 }, ['Melon Seeds'] = { pos = 1050, section = 19 }, ['Melon Slice'] = { pos = 3207, section = 10 }, Mendelevium = { pos = 1833, section = 34 }, ['Mercuric Chloride'] = { pos = 1915, section = 37 }, Mercury = { pos = 1817, section = 34 }, Metalloid = { pos = 71, section = 34 }, ['MHF Alex'] = { pos = 1438, section = 14 }, ['MHF ArrowDown'] = { pos = 1439, section = 14 }, ['MHF ArrowLeft'] = { pos = 1440, section = 14 }, ['MHF ArrowRight'] = { pos = 1441, section = 14 }, ['MHF ArrowUp'] = { pos = 1442, section = 14 }, ['MHF Blaze'] = { pos = 1443, section = 14 }, ['MHF Cactus'] = { pos = 1444, section = 14 }, ['MHF Cake'] = { pos = 1445, section = 14 }, ['MHF CaveSpider'] = { pos = 1446, section = 14 }, ['MHF Chest'] = { pos = 1447, section = 14 }, ['MHF Chicken'] = { pos = 1448, section = 14 }, ['MHF CoconutB'] = { pos = 1449, section = 14 }, ['MHF CoconutG'] = { pos = 1450, section = 14 }, ['MHF Cow'] = { pos = 1451, section = 14 }, ['MHF Creeper'] = { pos = 964, section = 14 }, ['MHF Enderman'] = { pos = 1452, section = 14 }, ['MHF Exclamation'] = { pos = 1453, section = 14 }, ['MHF Ghast'] = { pos = 1454, section = 14 }, ['MHF Golem'] = { pos = 1455, section = 14 }, ['MHF Herobrine'] = { pos = 1456, section = 14 }, ['MHF LavaSlime'] = { pos = 1457, section = 14 }, ['MHF Melon'] = { pos = 1458, section = 14 }, ['MHF MushroomCow'] = { pos = 1459, section = 14 }, ['MHF OakLog'] = { pos = 1460, section = 14 }, ['MHF Ocelot'] = { pos = 1461, section = 14 }, ['MHF Pig'] = { pos = 1462, section = 14 }, ['MHF PigZombie'] = { pos = 1463, section = 14 }, ['MHF Present1'] = { pos = 1464, section = 14 }, ['MHF Present2'] = { pos = 1465, section = 14 }, ['MHF Pumpkin'] = { pos = 1466, section = 14 }, ['MHF Question'] = { pos = 1467, section = 14 }, ['MHF Sheep'] = { pos = 1468, section = 14 }, ['MHF Skeleton'] = { pos = 3643, section = 14 }, ['MHF Slime'] = { pos = 1469, section = 14 }, ['MHF Spider'] = { pos = 1470, section = 14 }, ['MHF Squid'] = { pos = 1471, section = 14 }, ['MHF Steve'] = { pos = 966, section = 14 }, ['MHF TNT'] = { pos = 1472, section = 14 }, ['MHF TNT2'] = { pos = 1473, section = 14 }, ['MHF Villager'] = { pos = 1474, section = 14 }, ['MHF WSkeleton'] = { pos = 3644, section = 14 }, ['MHF Zombie'] = { pos = 3645, section = 14 }, Milk = { pos = 3148, section = 4 }, ['Milk Bucket'] = { pos = 3148, section = 4 }, ['Milk Bucket Revision 1'] = { pos = 226, section = 29 }, Minecart = { pos = 3622, section = 27 }, ['Minecart with Chest'] = { pos = 3623, section = 27 }, ['Minecart with Command Block'] = { pos = 3624, section = 27 }, ['Minecart with Command Block BE'] = { pos = 1539, section = 27 }, ['Minecart with Furnace'] = { pos = 3625, section = 27 }, ['Minecart with Hopper'] = { pos = 3626, section = 27 }, ['Minecart with TNT'] = { pos = 3627, section = 27 }, ['Miner Pottery Sherd'] = { pos = 1230, section = 44 }, ['Missing Model JE1'] = { pos = 1306, section = 30 }, ['Missing Texture'] = { pos = 1306, section = 30, deprecated = true }, ['Missing Texture 1.5'] = { pos = 554, section = 30, deprecated = true }, ['Missing Texture BE'] = { pos = 356, section = 30, deprecated = true }, Molybdenum = { pos = 1834, section = 34 }, ['Monster Spawner'] = { pos = 3379, section = 15 }, ['Monster Spawner BE'] = { pos = 508, section = 15 }, ['Monster Spawner JE'] = { pos = 3379, section = 15 }, ['Moobloom Spawn Egg'] = { pos = 627, section = 38 }, ['Moon Cow Spawn Egg'] = { pos = 1325, section = 32 }, ['Mooshroom Spawn Egg'] = { pos = 1154, section = 24 }, ['Mooshroom Spawn Egg Revision 1'] = { pos = 1390, section = 39 }, Moscovium = { pos = 1835, section = 34 }, ['Moss Block'] = { pos = 461, section = 15 }, ['Moss Carpet'] = { pos = 462, section = 15 }, ['Moss Stone'] = { pos = 986, section = 15 }, ['Mossy Cobblestone'] = { pos = 3367, section = 15 }, ['Mossy Cobblestone Slab'] = { pos = 3274, section = 12 }, ['Mossy Cobblestone Stairs'] = { pos = 3275, section = 12 }, ['Mossy Cobblestone Wall'] = { pos = 3276, section = 12 }, ['Mossy Cobblestone Wall BE'] = { pos = 2027, section = 12 }, ['Mossy Stone Brick Slab'] = { pos = 3277, section = 12 }, ['Mossy Stone Brick Stairs'] = { pos = 3278, section = 12 }, ['Mossy Stone Brick Wall'] = { pos = 3279, section = 12 }, ['Mossy Stone Brick Wall BE'] = { pos = 26, section = 12 }, ['Mossy Stone Bricks'] = { pos = 3368, section = 15 }, ['Mossy Stone Bricks Monster Egg'] = { pos = 3368, section = 15 }, ['Mourner Pottery Sherd'] = { pos = 1231, section = 44 }, Mud = { pos = 603, section = 15 }, ['Mud Brick Slab'] = { pos = 591, section = 12 }, ['Mud Brick Stairs'] = { pos = 592, section = 12 }, ['Mud Brick Wall'] = { pos = 593, section = 12 }, ['Mud Brick Wall BE'] = { pos = 629, section = 12 }, ['Mud Bricks'] = { pos = 594, section = 12 }, ['Mud Bucket'] = { pos = 92, section = 38 }, ['Muddy Mangrove Roots'] = { pos = 609, section = 19 }, ['Mule Spawn Egg'] = { pos = 1374, section = 24 }, ['Mule Spawn Egg Revision 1'] = { pos = 1152, section = 24 }, ['Mundane Lingering Potion'] = { pos = 1097, section = 31 }, ['Mundane Potion'] = { pos = 1083, section = 21 }, ['Mundane Potion Revision 1'] = { pos = 293, section = 45 }, ['Mundane Splash Potion'] = { pos = 1100, section = 22 }, ['Mushroom Stem'] = { pos = 3428, section = 19 }, ['Mushroom Stew'] = { pos = 3208, section = 10 }, ['Music Disc 11'] = { pos = 3153, section = 5 }, ['Music Disc 13'] = { pos = 673, section = 5 }, ['Music Disc 5'] = { pos = 630, section = 5 }, ['Music Disc Blocks'] = { pos = 675, section = 5 }, ['Music Disc Cat'] = { pos = 676, section = 5 }, ['Music Disc Chirp'] = { pos = 677, section = 5 }, ['Music Disc Far'] = { pos = 678, section = 5 }, ['Music Disc Mall'] = { pos = 681, section = 5 }, ['Music Disc Mellohi'] = { pos = 682, section = 5 }, ['Music Disc Otherside'] = { pos = 555, section = 5 }, ['Music Disc Pigstep'] = { pos = 289, section = 5 }, ['Music Disc Relic'] = { pos = 1324, section = 5 }, ['Music Disc Stal'] = { pos = 684, section = 5 }, ['Music Disc Strad'] = { pos = 685, section = 5 }, ['Music Disc Wait'] = { pos = 686, section = 5 }, ['Music Disc Ward'] = { pos = 687, section = 5 }, Mycelium = { pos = 3369, section = 15 }, ['Mycelium Revision 1'] = { pos = 106, section = 29 }, Name = { pos = 1263, section = 32 }, ['Name Tag'] = { pos = 3580, section = 25 }, Natrium = { pos = 1836, section = 34 }, ['Nautilus Shell'] = { pos = 1743, section = 23 }, Neodymium = { pos = 1837, section = 34 }, Neon = { pos = 1838, section = 34 }, Neptunium = { pos = 1839, section = 34 }, ['Nether Brick'] = { pos = 3520, section = 23 }, ['Nether Brick Block'] = { pos = 1003, section = 16 }, ['Nether Brick Fence'] = { pos = 640, section = 16 }, ['Nether Brick Fence BE'] = { pos = 3383, section = 16 }, ['Nether Brick Slab'] = { pos = 3280, section = 12 }, ['Nether Brick Stairs'] = { pos = 3384, section = 16 }, ['Nether Brick Stairs Left'] = { pos = 2260, section = 42 }, ['Nether Brick Wall'] = { pos = 3281, section = 12 }, ['Nether Brick Wall BE'] = { pos = 27, section = 12 }, ['Nether Bricks'] = { pos = 3385, section = 16 }, ['Nether Gold Ore'] = { pos = 202, section = 16 }, ['Nether Gold Ore Revision 1'] = { pos = 225, section = 29 }, ['Nether Portal'] = { pos = 2162, section = 29 }, ['Nether Quartz'] = { pos = 3521, section = 23 }, ['Nether Quartz Ore'] = { pos = 3386, section = 16 }, ['Nether Reactor Core'] = { pos = 1599, section = 20 }, ['Nether Reactor Core Revision 1'] = { pos = 1081, section = 29 }, ['Nether Sprouts'] = { pos = 94, section = 16 }, ['Nether Sprouts old'] = { pos = 191, section = 16 }, ['Nether Sprouts Revision 1'] = { pos = 267, section = 29 }, ['Nether Star'] = { pos = 355, section = 23 }, ['Nether Wart'] = { pos = 663, section = 3 }, ['Nether Wart (block)'] = { pos = 1007, section = 16 }, ['Nether Wart Block'] = { pos = 3282, section = 16 }, ['Netherite Axe'] = { pos = 137, section = 25 }, ['Netherite Boots'] = { pos = 142, section = 1 }, ['Netherite Chestplate'] = { pos = 143, section = 1 }, ['Netherite Helmet'] = { pos = 144, section = 1 }, ['Netherite Hoe'] = { pos = 138, section = 25 }, ['Netherite Ingot'] = { pos = 135, section = 23 }, ['Netherite Leggings'] = { pos = 145, section = 1 }, ['Netherite Pickaxe'] = { pos = 139, section = 25 }, ['Netherite Scrap'] = { pos = 136, section = 23 }, ['Netherite Shovel'] = { pos = 140, section = 25 }, ['Netherite Sword'] = { pos = 141, section = 28 }, ['Netherite Trim Chainmail Boots'] = { pos = 1063, section = 43 }, ['Netherite Trim Chainmail Chestplate'] = { pos = 1064, section = 43 }, ['Netherite Trim Chainmail Helmet'] = { pos = 1066, section = 43 }, ['Netherite Trim Chainmail Leggings'] = { pos = 1069, section = 43 }, ['Netherite Trim Diamond Boots'] = { pos = 1070, section = 43 }, ['Netherite Trim Diamond Chestplate'] = { pos = 1071, section = 43 }, ['Netherite Trim Diamond Helmet'] = { pos = 1072, section = 43 }, ['Netherite Trim Diamond Leggings'] = { pos = 1073, section = 43 }, ['Netherite Trim Golden Boots'] = { pos = 1074, section = 43 }, ['Netherite Trim Golden Chestplate'] = { pos = 1075, section = 43 }, ['Netherite Trim Golden Helmet'] = { pos = 1076, section = 43 }, ['Netherite Trim Golden Leggings'] = { pos = 1077, section = 43 }, ['Netherite Trim Iron Boots'] = { pos = 1078, section = 43 }, ['Netherite Trim Iron Chestplate'] = { pos = 1084, section = 43 }, ['Netherite Trim Iron Helmet'] = { pos = 1085, section = 43 }, ['Netherite Trim Iron Leggings'] = { pos = 1086, section = 43 }, ['Netherite Trim Leather Boots'] = { pos = 1087, section = 43 }, ['Netherite Trim Leather Cap'] = { pos = 1088, section = 43 }, ['Netherite Trim Leather Pants'] = { pos = 1089, section = 43 }, ['Netherite Trim Leather Tunic'] = { pos = 1090, section = 43 }, ['Netherite Trim Netherite Boots'] = { pos = 1091, section = 43 }, ['Netherite Trim Netherite Chestplate'] = { pos = 1092, section = 43 }, ['Netherite Trim Netherite Helmet'] = { pos = 1093, section = 43 }, ['Netherite Trim Netherite Leggings'] = { pos = 1094, section = 43 }, ['Netherite Trim Turtle Shell'] = { pos = 1095, section = 43 }, ['Netherite Upgrade'] = { pos = 801, section = 41 }, ['Netherite Upgrade Smithing Template'] = { pos = 801, section = 41 }, Netherrack = { pos = 3387, section = 16 }, Nickel = { pos = 1840, section = 34 }, Nihonium = { pos = 1841, section = 34 }, Niobium = { pos = 1842, section = 34 }, Nitrogen = { pos = 1843, section = 34 }, Nobelium = { pos = 1844, section = 34 }, ['Noble gas'] = { pos = 72, section = 34 }, ['Note Block'] = { pos = 3611, section = 26 }, ['Oak Boat'] = { pos = 633, section = 27 }, ['Oak Boat Revision 2'] = { pos = 3628, section = 29 }, ['Oak Boat with Chest'] = { pos = 616, section = 27 }, ['Oak Button'] = { pos = 3340, section = 13 }, ['Oak Door'] = { pos = 571, section = 13 }, ['Oak Door Revision 3'] = { pos = 945, section = 13 }, ['Oak Fence'] = { pos = 641, section = 12 }, ['Oak Fence BE'] = { pos = 3284, section = 12 }, ['Oak Fence Gate'] = { pos = 3283, section = 13 }, ['Oak Fence Gate BE'] = { pos = 56, section = 13 }, ['Oak Fence Gate Revision 1'] = { pos = 1620, section = 13 }, ['Oak Hanging Sign'] = { pos = 658, section = 5 }, ['Oak Leaves'] = { pos = 3429, section = 19 }, ['Oak Log'] = { pos = 3430, section = 19 }, ['Oak Planks'] = { pos = 903, section = 12 }, ['Oak Pressure Plate'] = { pos = 3341, section = 13 }, ['Oak Pressure Plate Revision 1'] = { pos = 2086, section = 29 }, ['Oak Sapling'] = { pos = 3431, section = 19 }, ['Oak Sign'] = { pos = 3389, section = 17 }, ['Oak Sign Revision 1'] = { pos = 354, section = 29 }, ['Oak Slab'] = { pos = 3285, section = 12 }, ['Oak Stairs'] = { pos = 3286, section = 12 }, ['Oak Stairs Left'] = { pos = 2261, section = 42 }, ['Oak Trapdoor'] = { pos = 958, section = 13 }, ['Oak Wood'] = { pos = 3287, section = 12 }, ['Oak Wood Button'] = { pos = 3340, section = 13 }, ['Oak Wood Door'] = { pos = 571, section = 13 }, ['Oak Wood Fence'] = { pos = 641, section = 12 }, ['Oak Wood Fence Gate'] = { pos = 3283, section = 13 }, ['Oak Wood Planks'] = { pos = 903, section = 12 }, ['Oak Wood Pressure Plate'] = { pos = 3341, section = 13 }, ['Oak Wood Sign'] = { pos = 3389, section = 17 }, ['Oak Wood Slab'] = { pos = 904, section = 12 }, ['Oak Wood Stairs'] = { pos = 3286, section = 12 }, ['Oak Wood Trapdoor'] = { pos = 958, section = 13 }, Observer = { pos = 3612, section = 26 }, ['Observer BE'] = { pos = 1619, section = 13 }, ['Observer PE old'] = { pos = 1383, section = 29 }, ['Observer pre-1.11-pre1'] = { pos = 1383, section = 29 }, Obsidian = { pos = 3370, section = 15 }, ['Obsidian Boat'] = { pos = 1308, section = 32 }, ['Ocean Explorer Map'] = { pos = 3581, section = 25 }, ['Ocean Explorer Map BE'] = { pos = 125, section = 25 }, ['Ocelot Spawn Egg'] = { pos = 1155, section = 24 }, ['Ochre Froglight'] = { pos = 595, section = 12 }, ['Ochre Froglight BE'] = { pos = 578, section = 12 }, Oganesson = { pos = 1845, section = 34 }, ['Ominous Banner'] = { pos = 2468, section = 2 }, ['Ominous Shield'] = { pos = 377, section = 1 }, ['Orange Balloon'] = { pos = 1941, section = 33 }, ['Orange Banner'] = { pos = 764, section = 7 }, ['Orange Banner 15w14a'] = { pos = 482, section = 32 }, ['Orange Base Banner'] = { pos = 2910, section = 2 }, ['Orange Base Dexter Canton Banner'] = { pos = 2911, section = 2 }, ['Orange Base Gradient Banner'] = { pos = 2912, section = 2 }, ['Orange Base Indented Banner'] = { pos = 2913, section = 2 }, ['Orange Base Sinister Canton Banner'] = { pos = 2914, section = 2 }, ['Orange Beaker'] = { pos = 1899, section = 35 }, ['Orange Bed'] = { pos = 3181, section = 7 }, ['Orange Bed BE'] = { pos = 1555, section = 7 }, ['Orange Bed LCE'] = { pos = 1555, section = 7 }, ['Orange Bend Banner'] = { pos = 2915, section = 2 }, ['Orange Bend Sinister Banner'] = { pos = 2916, section = 2 }, ['Orange Bordure Banner'] = { pos = 2917, section = 2 }, ['Orange Bordure Indented Banner'] = { pos = 2918, section = 2 }, ['Orange Candle'] = { pos = 419, section = 7 }, ['Orange Carpet'] = { pos = 1631, section = 7 }, ['Orange Carpet Revision 1'] = { pos = 765, section = 40 }, ['Orange Chevron Banner'] = { pos = 2919, section = 2 }, ['Orange Chief Banner'] = { pos = 2920, section = 2 }, ['Orange Chief Dexter Canton Banner'] = { pos = 2921, section = 2 }, ['Orange Chief Indented Banner'] = { pos = 2922, section = 2 }, ['Orange Chief Sinister Canton Banner'] = { pos = 2923, section = 2 }, ['Orange Cloth'] = { pos = 236, section = 40 }, ['Orange Concrete'] = { pos = 1505, section = 7 }, ['Orange Concrete Powder'] = { pos = 1506, section = 7 }, ['Orange Creeper Charge Banner'] = { pos = 2924, section = 2 }, ['Orange Cross Banner'] = { pos = 2925, section = 2 }, ['Orange Dye'] = { pos = 3166, section = 6 }, ['Orange Fess Banner'] = { pos = 2926, section = 2 }, ['Orange Field Masoned Banner'] = { pos = 2927, section = 2 }, ['Orange Firework Star'] = { pos = 816, section = 9 }, ['Orange Flask'] = { pos = 1911, section = 36 }, ['Orange Flower Charge Banner'] = { pos = 2928, section = 2 }, ['Orange Glazed Terracotta'] = { pos = 1542, section = 7 }, ['Orange Glazed Terracotta Revision 1'] = { pos = 1507, section = 40 }, ['Orange Globe Banner'] = { pos = 46, section = 2 }, ['Orange Glow Stick'] = { pos = 2002, section = 33 }, ['Orange Gradient Banner'] = { pos = 2929, section = 2 }, ['Orange Inverted Chevron Banner'] = { pos = 2930, section = 2 }, ['Orange Jar'] = { pos = 1925, section = 37 }, ['Orange Lozenge Banner'] = { pos = 2931, section = 2 }, ['Orange Pale Banner'] = { pos = 2932, section = 2 }, ['Orange Pale Dexter Banner'] = { pos = 2933, section = 2 }, ['Orange Pale Sinister Banner'] = { pos = 2934, section = 2 }, ['Orange Paly Banner'] = { pos = 2935, section = 2 }, ['Orange Per Bend Banner'] = { pos = 2936, section = 2 }, ['Orange Per Bend Inverted Banner'] = { pos = 2937, section = 2 }, ['Orange Per Bend Sinister Banner'] = { pos = 2938, section = 2 }, ['Orange Per Bend Sinister Inverted Banner'] = { pos = 2939, section = 2 }, ['Orange Per Fess Banner'] = { pos = 2940, section = 2 }, ['Orange Per Fess Inverted Banner'] = { pos = 2941, section = 2 }, ['Orange Per Pale Banner'] = { pos = 2942, section = 2 }, ['Orange Per Pale Inverted Banner'] = { pos = 2943, section = 2 }, ['Orange Piglin Banner'] = { pos = 369, section = 2 }, ['Orange Roundel Banner'] = { pos = 2944, section = 2 }, ['Orange Saltire Banner'] = { pos = 2945, section = 2 }, ['Orange Shield'] = { pos = 2523, section = 1 }, ['Orange Shulker Box'] = { pos = 1613, section = 7 }, ['Orange Shulker Box Revision 1'] = { pos = 1426, section = 40 }, ['Orange Skull Charge Banner'] = { pos = 2946, section = 2 }, ['Orange Snout Banner'] = { pos = 369, section = 2 }, ['Orange Sparkler'] = { pos = 1758, section = 33 }, ['Orange Sparkler (active)'] = { pos = 1759, section = 33 }, ['Orange Stained Glass'] = { pos = 767, section = 7 }, ['Orange Stained Glass Pane'] = { pos = 768, section = 7 }, ['Orange Stained Glass Pane BE'] = { pos = 2018, section = 7 }, ['Orange Terracotta'] = { pos = 766, section = 7 }, ['Orange Thing Banner'] = { pos = 2947, section = 2 }, ['Orange Tinted Glass'] = { pos = 1309, section = 40 }, ['Orange Tinted Glass Pane'] = { pos = 13, section = 40 }, ['Orange Tulip'] = { pos = 3432, section = 19 }, ['Orange Wood Planks'] = { pos = 254, section = 30 }, ['Orange Wool'] = { pos = 1533, section = 7 }, ['Orange Wool Revision 2'] = { pos = 769, section = 40 }, Osmium = { pos = 1846, section = 34 }, ['Other non-metal'] = { pos = 73, section = 34 }, ['Oxeye Daisy'] = { pos = 3433, section = 19 }, ['Oxidized Copper'] = { pos = 441, section = 12 }, ['Oxidized Copper Block'] = { pos = 441, section = 12 }, ['Oxidized Cut Copper'] = { pos = 442, section = 12 }, ['Oxidized Cut Copper Block'] = { pos = 442, section = 12 }, ['Oxidized Cut Copper Slab'] = { pos = 443, section = 12 }, ['Oxidized Cut Copper Stairs'] = { pos = 444, section = 12 }, Oxygen = { pos = 1847, section = 34 }, ['Packed Air'] = { pos = 2363, section = 15 }, ['Packed Ice'] = { pos = 3371, section = 15 }, ['Packed Mud'] = { pos = 596, section = 12 }, Painting = { pos = 3154, section = 5 }, Palladium = { pos = 1848, section = 34 }, ['Panda Spawn Egg'] = { pos = 2412, section = 24 }, Paper = { pos = 3523, section = 23 }, ['Parrot Spawn Egg'] = { pos = 1544, section = 24 }, ['Pearlescent Froglight'] = { pos = 612, section = 12 }, ['Pearlescent Froglight BE'] = { pos = 579, section = 12 }, Peony = { pos = 3434, section = 19 }, ['Peony 3DS'] = { pos = 1572, section = 29 }, ['Peony BE Revision 2'] = { pos = 1572, section = 29 }, ['Peony LCE Revision 2'] = { pos = 1572, section = 29 }, ['Petrified Oak Slab'] = { pos = 904, section = 12 }, ['Phantom Membrane'] = { pos = 1730, section = 3 }, ['Phantom Membrane Revision 1'] = { pos = 105, section = 29 }, ['Phantom Spawn Egg'] = { pos = 1974, section = 24 }, ['Phantom Spawn Egg Revision 1'] = { pos = 1728, section = 39 }, Phosphorus = { pos = 1849, section = 34 }, Photo = { pos = 620, section = 20 }, ['Pickaxe Block'] = { pos = 1264, section = 32 }, ['Pig Spawn Egg'] = { pos = 1156, section = 24 }, ['Pig Spawn Egg Revision 1'] = { pos = 1391, section = 39 }, ['Piglin Brute Spawn Egg'] = { pos = 262, section = 24 }, ['Piglin Head'] = { pos = 701, section = 14 }, ['Piglin Spawn Egg'] = { pos = 193, section = 24 }, ['Piglin Spawn Egg BE'] = { pos = 205, section = 24 }, ['Pillager Spawn Egg'] = { pos = 2413, section = 24 }, ['Pink Balloon'] = { pos = 1942, section = 33 }, ['Pink Banner'] = { pos = 770, section = 7 }, ['Pink Banner 15w14a'] = { pos = 483, section = 32 }, ['Pink Base Banner'] = { pos = 2948, section = 2 }, ['Pink Base Dexter Canton Banner'] = { pos = 2949, section = 2 }, ['Pink Base Gradient Banner'] = { pos = 2950, section = 2 }, ['Pink Base Indented Banner'] = { pos = 2951, section = 2 }, ['Pink Base Sinister Canton Banner'] = { pos = 2952, section = 2 }, ['Pink Bed'] = { pos = 3182, section = 7 }, ['Pink Bed BE'] = { pos = 1556, section = 7 }, ['Pink Bed LCE'] = { pos = 1556, section = 7 }, ['Pink Bend Banner'] = { pos = 2953, section = 2 }, ['Pink Bend Sinister Banner'] = { pos = 2954, section = 2 }, ['Pink Bordure Banner'] = { pos = 2955, section = 2 }, ['Pink Bordure Indented Banner'] = { pos = 2956, section = 2 }, ['Pink Candle'] = { pos = 420, section = 7 }, ['Pink Carpet'] = { pos = 1632, section = 7 }, ['Pink Carpet Revision 1'] = { pos = 771, section = 40 }, ['Pink Chevron Banner'] = { pos = 2957, section = 2 }, ['Pink Chief Banner'] = { pos = 2958, section = 2 }, ['Pink Chief Dexter Canton Banner'] = { pos = 2959, section = 2 }, ['Pink Chief Indented Banner'] = { pos = 2960, section = 2 }, ['Pink Chief Sinister Canton Banner'] = { pos = 2961, section = 2 }, ['Pink Concrete'] = { pos = 1508, section = 7 }, ['Pink Concrete Powder'] = { pos = 1509, section = 7 }, ['Pink Creeper Charge Banner'] = { pos = 2962, section = 2 }, ['Pink Cross Banner'] = { pos = 2963, section = 2 }, ['Pink Daisy'] = { pos = 552, section = 38 }, ['Pink Dye'] = { pos = 3167, section = 6 }, ['Pink Fess Banner'] = { pos = 2964, section = 2 }, ['Pink Field Masoned Banner'] = { pos = 2965, section = 2 }, ['Pink Firework Star'] = { pos = 817, section = 9 }, ['Pink Flower Charge Banner'] = { pos = 2966, section = 2 }, ['Pink Glazed Terracotta'] = { pos = 1510, section = 7 }, ['Pink Globe Banner'] = { pos = 47, section = 2 }, ['Pink Glow Stick'] = { pos = 2003, section = 33 }, ['Pink Gradient Banner'] = { pos = 2967, section = 2 }, ['Pink Inverted Chevron Banner'] = { pos = 2968, section = 2 }, ['Pink Lozenge Banner'] = { pos = 2969, section = 2 }, ['Pink Pale Banner'] = { pos = 2970, section = 2 }, ['Pink Pale Dexter Banner'] = { pos = 2971, section = 2 }, ['Pink Pale Sinister Banner'] = { pos = 2972, section = 2 }, ['Pink Paly Banner'] = { pos = 2973, section = 2 }, ['Pink Per Bend Banner'] = { pos = 2974, section = 2 }, ['Pink Per Bend Inverted Banner'] = { pos = 2975, section = 2 }, ['Pink Per Bend Sinister Banner'] = { pos = 2976, section = 2 }, ['Pink Per Bend Sinister Inverted Banner'] = { pos = 2977, section = 2 }, ['Pink Per Fess Banner'] = { pos = 2978, section = 2 }, ['Pink Per Fess Inverted Banner'] = { pos = 2979, section = 2 }, ['Pink Per Pale Banner'] = { pos = 2980, section = 2 }, ['Pink Per Pale Inverted Banner'] = { pos = 2981, section = 2 }, ['Pink Petals'] = { pos = 1198, section = 19 }, ['Pink Piglin Banner'] = { pos = 370, section = 2 }, ['Pink Roundel Banner'] = { pos = 2982, section = 2 }, ['Pink Saltire Banner'] = { pos = 2983, section = 2 }, ['Pink Shield'] = { pos = 2524, section = 1 }, ['Pink Shulker Box'] = { pos = 1614, section = 7 }, ['Pink Shulker Box Revision 1'] = { pos = 1427, section = 40 }, ['Pink Skull Charge Banner'] = { pos = 2984, section = 2 }, ['Pink Snout Banner'] = { pos = 370, section = 2 }, ['Pink Stained Glass'] = { pos = 773, section = 7 }, ['Pink Stained Glass Pane'] = { pos = 774, section = 7 }, ['Pink Stained Glass Pane BE'] = { pos = 2019, section = 7 }, ['Pink Terracotta'] = { pos = 772, section = 7 }, ['Pink Thing Banner'] = { pos = 2985, section = 2 }, ['Pink Tinted Glass'] = { pos = 1310, section = 40 }, ['Pink Tinted Glass Pane'] = { pos = 14, section = 40 }, ['Pink Tulip'] = { pos = 3435, section = 19 }, ['Pink Wood Planks'] = { pos = 255, section = 30 }, ['Pink Wool'] = { pos = 1534, section = 7 }, ['Pink Wool Revision 2'] = { pos = 775, section = 40 }, Piston = { pos = 3342, section = 13 }, ['Piston Head Model'] = { pos = 1316, section = 30 }, ['Pitcher Plant'] = { pos = 1212, section = 19 }, ['Pitcher Pod'] = { pos = 1213, section = 19 }, ['Place Block'] = { pos = 1265, section = 32 }, ['Placeholder Texture'] = { pos = 1317, section = 30 }, ['Plains Village Map'] = { pos = 1326, section = 25 }, ['Plains Village Map BE'] = { pos = 1327, section = 25 }, Platinum = { pos = 1850, section = 34 }, ['Player Head'] = { pos = 966, section = 14 }, ['Plenty Pottery Sherd'] = { pos = 1232, section = 44 }, Plumbum = { pos = 1826, section = 34 }, Plutonium = { pos = 1851, section = 34 }, Podzol = { pos = 3372, section = 15 }, ['Pointed Dripstone'] = { pos = 436, section = 15 }, ['Pointed Dripstone BE'] = { pos = 459, section = 15 }, ['Poisonous Potato'] = { pos = 3209, section = 10 }, ['Polar Bear Spawn Egg'] = { pos = 1375, section = 24 }, ['Polished Andesite'] = { pos = 907, section = 12 }, ['Polished Andesite Slab'] = { pos = 3288, section = 12 }, ['Polished Andesite Stairs'] = { pos = 3289, section = 12 }, ['Polished Basalt'] = { pos = 206, section = 12 }, ['Polished Blackstone'] = { pos = 274, section = 16 }, ['Polished Blackstone Brick Slab'] = { pos = 279, section = 12 }, ['Polished Blackstone Brick Stairs'] = { pos = 280, section = 12 }, ['Polished Blackstone Brick Wall'] = { pos = 281, section = 12 }, ['Polished Blackstone Brick Wall BE'] = { pos = 387, section = 12 }, ['Polished Blackstone Bricks'] = { pos = 275, section = 16 }, ['Polished Blackstone Button'] = { pos = 285, section = 13 }, ['Polished Blackstone Pressure Plate'] = { pos = 286, section = 13 }, ['Polished Blackstone Slab'] = { pos = 282, section = 12 }, ['Polished Blackstone Stairs'] = { pos = 283, section = 12 }, ['Polished Blackstone Wall'] = { pos = 284, section = 12 }, ['Polished Blackstone Wall BE'] = { pos = 388, section = 12 }, ['Polished Deepslate'] = { pos = 501, section = 12 }, ['Polished Deepslate Slab'] = { pos = 504, section = 12 }, ['Polished Deepslate Stairs'] = { pos = 505, section = 12 }, ['Polished Deepslate Wall'] = { pos = 502, section = 12 }, ['Polished Deepslate Wall BE'] = { pos = 562, section = 12 }, ['Polished Diorite'] = { pos = 908, section = 12 }, ['Polished Diorite Slab'] = { pos = 3290, section = 12 }, ['Polished Diorite Stairs'] = { pos = 3291, section = 12 }, ['Polished Granite'] = { pos = 909, section = 12 }, ['Polished Granite Slab'] = { pos = 2430, section = 12 }, ['Polished Granite Stairs'] = { pos = 2431, section = 12 }, Polonium = { pos = 1852, section = 34 }, Polyethylene = { pos = 1922, section = 37 }, ['Popped Chorus Fruit'] = { pos = 3524, section = 23 }, Poppy = { pos = 3436, section = 19 }, Portal = { pos = 1011, section = 17 }, Portfolio = { pos = 1594, section = 20 }, ['Post transition metal'] = { pos = 74, section = 34 }, Poster = { pos = 1595, section = 20 }, Potassium = { pos = 1822, section = 34 }, ['Potassium Chloride'] = { pos = 1915, section = 37 }, ['Potassium Iodide'] = { pos = 1890, section = 35 }, Potato = { pos = 3210, section = 10 }, ['Potato Revision 1'] = { pos = 128, section = 29 }, ['Potato Revision 2'] = { pos = 129, section = 29 }, ['Potion of Big'] = { pos = 1282, section = 32 }, ['Potion of Decay'] = { pos = 1402, section = 21 }, ['Potion of Fire Resistance'] = { pos = 3450, section = 21 }, ['Potion of Fire Resistance Revision 1'] = { pos = 294, section = 45 }, ['Potion of Harming'] = { pos = 3451, section = 21 }, ['Potion of Harming Revision 1'] = { pos = 295, section = 45 }, ['Potion of Healing'] = { pos = 3452, section = 21 }, ['Potion of Healing Revision 1'] = { pos = 296, section = 45 }, ['Potion of Invisibility'] = { pos = 3453, section = 21 }, ['Potion of Invisibility Revision 1'] = { pos = 297, section = 45 }, ['Potion of Leaping'] = { pos = 3454, section = 21 }, ['Potion of Leaping Revision 1'] = { pos = 298, section = 45 }, ['Potion of Levitation'] = { pos = 114, section = 21 }, ['Potion of Luck'] = { pos = 3455, section = 21 }, ['Potion of Luck Revision 1'] = { pos = 299, section = 45 }, ['Potion of Night Vision'] = { pos = 3456, section = 21 }, ['Potion of Night Vision Revision 1'] = { pos = 300, section = 45 }, ['Potion of Poison'] = { pos = 3457, section = 21 }, ['Potion of Poison Revision 1'] = { pos = 301, section = 45 }, ['Potion of Regeneration'] = { pos = 3458, section = 21 }, ['Potion of Regeneration Revision 1'] = { pos = 302, section = 45 }, ['Potion of Slow Falling'] = { pos = 3459, section = 21 }, ['Potion of Slow Falling Revision 1'] = { pos = 303, section = 45 }, ['Potion of Slowness'] = { pos = 3460, section = 21 }, ['Potion of Slowness Revision 1'] = { pos = 304, section = 45 }, ['Potion of Small'] = { pos = 1283, section = 32 }, ['Potion of Strength'] = { pos = 3461, section = 21 }, ['Potion of Strength Revision 1'] = { pos = 305, section = 45 }, ['Potion of Swiftness'] = { pos = 3462, section = 21 }, ['Potion of Swiftness Revision 1'] = { pos = 306, section = 45 }, ['Potion of the Turtle Master'] = { pos = 3463, section = 21 }, ['Potion of the Turtle Master Revision 1'] = { pos = 307, section = 45 }, ['Potion of Water Breathing'] = { pos = 3464, section = 21 }, ['Potion of Water Breathing Revision 1'] = { pos = 308, section = 45 }, ['Potion of Weakness'] = { pos = 3465, section = 21 }, ['Powder Snow'] = { pos = 391, section = 15 }, ['Powder Snow Bucket'] = { pos = 434, section = 4 }, ['Powered Rail'] = { pos = 3343, section = 13 }, Praseodymium = { pos = 1853, section = 34 }, ['Prismarine Brick Slab'] = { pos = 3292, section = 12 }, ['Prismarine Brick Stairs'] = { pos = 111, section = 12 }, ['Prismarine Brick Stairs Old'] = { pos = 1663, section = 12 }, ['Prismarine Bricks'] = { pos = 3373, section = 15 }, ['Prismarine Bricks Slab'] = { pos = 1666, section = 12 }, ['Prismarine Crystals'] = { pos = 3525, section = 23 }, ['Prismarine Shard'] = { pos = 3526, section = 23 }, ['Prismarine Wall'] = { pos = 97, section = 12 }, ['Prismarine Wall BE'] = { pos = 28, section = 12 }, ['Prize Pottery Sherd'] = { pos = 1203, section = 44 }, Promethium = { pos = 1854, section = 34 }, Protactinium = { pos = 1855, section = 34 }, Protoactinium = { pos = 1855, section = 34 }, Pufferfish = { pos = 1692, section = 10 }, ['Pufferfish 3DS'] = { pos = 837, section = 10 }, ['Pufferfish Revision 2'] = { pos = 837, section = 10 }, ['Pufferfish Spawn Egg'] = { pos = 1698, section = 24 }, ['Pufferfish Spawn Egg Revision 1'] = { pos = 1969, section = 39 }, Pumpkin = { pos = 3437, section = 19 }, ['Pumpkin Pie'] = { pos = 3211, section = 10 }, ['Pumpkin Seeds'] = { pos = 1061, section = 19 }, ['Purple Balloon'] = { pos = 1943, section = 33 }, ['Purple Banner'] = { pos = 776, section = 7 }, ['Purple Banner 15w14a'] = { pos = 484, section = 32 }, ['Purple Base Banner'] = { pos = 2986, section = 2 }, ['Purple Base Dexter Canton Banner'] = { pos = 2987, section = 2 }, ['Purple Base Gradient Banner'] = { pos = 2988, section = 2 }, ['Purple Base Indented Banner'] = { pos = 2989, section = 2 }, ['Purple Base Sinister Canton Banner'] = { pos = 2990, section = 2 }, ['Purple Beaker'] = { pos = 1900, section = 35 }, ['Purple Bed'] = { pos = 3183, section = 7 }, ['Purple Bed BE'] = { pos = 1557, section = 7 }, ['Purple Bed LCE'] = { pos = 1557, section = 7 }, ['Purple Bend Banner'] = { pos = 2991, section = 2 }, ['Purple Bend Sinister Banner'] = { pos = 2992, section = 2 }, ['Purple Bordure Banner'] = { pos = 2993, section = 2 }, ['Purple Bordure Indented Banner'] = { pos = 2994, section = 2 }, ['Purple Candle'] = { pos = 421, section = 7 }, ['Purple Carpet'] = { pos = 1633, section = 7 }, ['Purple Carpet Revision 1'] = { pos = 777, section = 40 }, ['Purple Chevron Banner'] = { pos = 2995, section = 2 }, ['Purple Chief Banner'] = { pos = 2996, section = 2 }, ['Purple Chief Dexter Canton Banner'] = { pos = 2997, section = 2 }, ['Purple Chief Indented Banner'] = { pos = 2998, section = 2 }, ['Purple Chief Sinister Canton Banner'] = { pos = 2999, section = 2 }, ['Purple Cloth'] = { pos = 241, section = 40 }, ['Purple Concrete'] = { pos = 1511, section = 7 }, ['Purple Concrete Powder'] = { pos = 1512, section = 7 }, ['Purple Creeper Charge Banner'] = { pos = 3000, section = 2 }, ['Purple Cross Banner'] = { pos = 3001, section = 2 }, ['Purple Dye'] = { pos = 3168, section = 6 }, ['Purple Fess Banner'] = { pos = 3002, section = 2 }, ['Purple Field Masoned Banner'] = { pos = 3003, section = 2 }, ['Purple Firework Star'] = { pos = 818, section = 9 }, ['Purple Flask'] = { pos = 1912, section = 36 }, ['Purple Flower Charge Banner'] = { pos = 3004, section = 2 }, ['Purple Glazed Terracotta'] = { pos = 1513, section = 7 }, ['Purple Globe Banner'] = { pos = 48, section = 2 }, ['Purple Glow Stick'] = { pos = 2004, section = 33 }, ['Purple Gradient Banner'] = { pos = 3005, section = 2 }, ['Purple Inverted Chevron Banner'] = { pos = 3006, section = 2 }, ['Purple Jar'] = { pos = 1926, section = 37 }, ['Purple Lozenge Banner'] = { pos = 3007, section = 2 }, ['Purple Pale Banner'] = { pos = 3008, section = 2 }, ['Purple Pale Dexter Banner'] = { pos = 3009, section = 2 }, ['Purple Pale Sinister Banner'] = { pos = 3010, section = 2 }, ['Purple Paly Banner'] = { pos = 3011, section = 2 }, ['Purple Per Bend Banner'] = { pos = 3012, section = 2 }, ['Purple Per Bend Inverted Banner'] = { pos = 3013, section = 2 }, ['Purple Per Bend Sinister Banner'] = { pos = 3014, section = 2 }, ['Purple Per Bend Sinister Inverted Banner'] = { pos = 3015, section = 2 }, ['Purple Per Fess Banner'] = { pos = 3016, section = 2 }, ['Purple Per Fess Inverted Banner'] = { pos = 3017, section = 2 }, ['Purple Per Pale Banner'] = { pos = 3018, section = 2 }, ['Purple Per Pale Inverted Banner'] = { pos = 3019, section = 2 }, ['Purple Piglin Banner'] = { pos = 371, section = 2 }, ['Purple Roundel Banner'] = { pos = 3020, section = 2 }, ['Purple Saltire Banner'] = { pos = 3021, section = 2 }, ['Purple Shield'] = { pos = 2525, section = 1 }, ['Purple Shulker Box'] = { pos = 1428, section = 7 }, ['Purple Skull Charge Banner'] = { pos = 3022, section = 2 }, ['Purple Snout Banner'] = { pos = 371, section = 2 }, ['Purple Sparkler'] = { pos = 1760, section = 33 }, ['Purple Sparkler (active)'] = { pos = 1761, section = 33 }, ['Purple Stained Glass'] = { pos = 779, section = 7 }, ['Purple Stained Glass Pane'] = { pos = 780, section = 7 }, ['Purple Stained Glass Pane BE'] = { pos = 2020, section = 7 }, ['Purple Terracotta'] = { pos = 778, section = 7 }, ['Purple Thing Banner'] = { pos = 3023, section = 2 }, ['Purple Tinted Glass'] = { pos = 1311, section = 40 }, ['Purple Tinted Glass Pane'] = { pos = 15, section = 40 }, ['Purple Torch'] = { pos = 1762, section = 33 }, ['Purple Wood Planks'] = { pos = 256, section = 30 }, ['Purple Wool'] = { pos = 1535, section = 7 }, ['Purple Wool Revision 2'] = { pos = 781, section = 40 }, ['Purpur Block'] = { pos = 910, section = 12 }, ['Purpur Pillar'] = { pos = 911, section = 12 }, ['Purpur Slab'] = { pos = 3293, section = 12 }, ['Purpur Stairs'] = { pos = 3294, section = 12 }, ['Quartz Bricks'] = { pos = 288, section = 12 }, ['Quartz Pillar'] = { pos = 906, section = 12 }, ['Quartz Slab'] = { pos = 3295, section = 12 }, ['Quartz Stairs'] = { pos = 3296, section = 12 }, ['Quartz Trim Chainmail Boots'] = { pos = 1096, section = 43 }, ['Quartz Trim Chainmail Chestplate'] = { pos = 1098, section = 43 }, ['Quartz Trim Chainmail Helmet'] = { pos = 1099, section = 43 }, ['Quartz Trim Chainmail Leggings'] = { pos = 1101, section = 43 }, ['Quartz Trim Diamond Boots'] = { pos = 1102, section = 43 }, ['Quartz Trim Diamond Chestplate'] = { pos = 1103, section = 43 }, ['Quartz Trim Diamond Helmet'] = { pos = 1104, section = 43 }, ['Quartz Trim Diamond Leggings'] = { pos = 1105, section = 43 }, ['Quartz Trim Golden Boots'] = { pos = 1106, section = 43 }, ['Quartz Trim Golden Chestplate'] = { pos = 1107, section = 43 }, ['Quartz Trim Golden Helmet'] = { pos = 1108, section = 43 }, ['Quartz Trim Golden Leggings'] = { pos = 1109, section = 43 }, ['Quartz Trim Iron Boots'] = { pos = 1110, section = 43 }, ['Quartz Trim Iron Chestplate'] = { pos = 1111, section = 43 }, ['Quartz Trim Iron Helmet'] = { pos = 1112, section = 43 }, ['Quartz Trim Iron Leggings'] = { pos = 1113, section = 43 }, ['Quartz Trim Leather Boots'] = { pos = 1114, section = 43 }, ['Quartz Trim Leather Cap'] = { pos = 1115, section = 43 }, ['Quartz Trim Leather Pants'] = { pos = 1116, section = 43 }, ['Quartz Trim Leather Tunic'] = { pos = 1117, section = 43 }, ['Quartz Trim Netherite Boots'] = { pos = 1118, section = 43 }, ['Quartz Trim Netherite Chestplate'] = { pos = 1120, section = 43 }, ['Quartz Trim Netherite Helmet'] = { pos = 1121, section = 43 }, ['Quartz Trim Netherite Leggings'] = { pos = 1122, section = 43 }, ['Quartz Trim Turtle Shell'] = { pos = 1123, section = 43 }, Quiver = { pos = 2088, section = 30 }, ['Rabbit Hide'] = { pos = 3527, section = 23 }, ['Rabbit Spawn Egg'] = { pos = 1157, section = 24 }, ['Rabbit Stew'] = { pos = 3212, section = 10 }, ["Rabbit's Foot"] = { pos = 3144, section = 3 }, Radium = { pos = 1856, section = 34 }, Radon = { pos = 1857, section = 34 }, Rail = { pos = 3344, section = 13 }, ['Rainbow Bed'] = { pos = 3646, section = 38 }, ['Rainbow Carpet'] = { pos = 3647, section = 38 }, ['Rainbow Wool'] = { pos = 3648, section = 38 }, ['Raiser Armor Trim'] = { pos = 1215, section = 41 }, ['Raiser Armor Trim Smithing Template'] = { pos = 1215, section = 41 }, ['Ravager Spawn Egg'] = { pos = 2411, section = 24 }, ['Raw Beef'] = { pos = 3213, section = 10 }, ['Raw Chicken'] = { pos = 3214, section = 10 }, ['Raw Cod'] = { pos = 1693, section = 10 }, ['Raw Copper'] = { pos = 542, section = 23 }, ['Raw Fish'] = { pos = 842, section = 10 }, ['Raw Fish Revision 1'] = { pos = 842, section = 10 }, ['Raw Gold'] = { pos = 543, section = 23 }, ['Raw Iron'] = { pos = 544, section = 23 }, ['Raw Mutton'] = { pos = 3215, section = 10 }, ['Raw Porkchop'] = { pos = 3216, section = 10 }, ['Raw Rabbit'] = { pos = 3217, section = 10 }, ['Raw Salmon'] = { pos = 1694, section = 10 }, ['Raw Salmon 3DS'] = { pos = 846, section = 10 }, ['Raw Salmon Revision 1'] = { pos = 846, section = 10 }, ['Reality Vision'] = { pos = 1638, section = 32 }, ['Recipe Book'] = { pos = 385, section = 30 }, ['Recovery Compass'] = { pos = 623, section = 25 }, ['Red Balloon'] = { pos = 1944, section = 33 }, ['Red Banner'] = { pos = 782, section = 7 }, ['Red Banner 15w14a'] = { pos = 485, section = 32 }, ['Red Base Banner'] = { pos = 3024, section = 2 }, ['Red Base Dexter Canton Banner'] = { pos = 3025, section = 2 }, ['Red Base Gradient Banner'] = { pos = 3026, section = 2 }, ['Red Base Indented Banner'] = { pos = 3027, section = 2 }, ['Red Base Sinister Canton Banner'] = { pos = 3028, section = 2 }, ['Red Beaker'] = { pos = 1901, section = 35 }, ['Red Bed'] = { pos = 3184, section = 7 }, ['Red Bed BE'] = { pos = 1558, section = 7 }, ['Red Bed LCE'] = { pos = 1558, section = 7 }, ['Red Bed Revision 1'] = { pos = 1558, section = 7 }, ['Red Bend Banner'] = { pos = 3029, section = 2 }, ['Red Bend Sinister Banner'] = { pos = 3030, section = 2 }, ['Red Bordure Banner'] = { pos = 3032, section = 2 }, ['Red Bordure Indented Banner'] = { pos = 3031, section = 2 }, ['Red Candle'] = { pos = 422, section = 7 }, ['Red Carpet'] = { pos = 1634, section = 7 }, ['Red Carpet Revision 1'] = { pos = 783, section = 40 }, ['Red Chevron Banner'] = { pos = 3033, section = 2 }, ['Red Chief Banner'] = { pos = 3034, section = 2 }, ['Red Chief Dexter Canton Banner'] = { pos = 3035, section = 2 }, ['Red Chief Indented Banner'] = { pos = 3036, section = 2 }, ['Red Chief Sinister Canton Banner'] = { pos = 3037, section = 2 }, ['Red Cloth'] = { pos = 239, section = 40 }, ['Red Concrete'] = { pos = 1514, section = 7 }, ['Red Concrete Powder'] = { pos = 1515, section = 7 }, ['Red Creeper Charge Banner'] = { pos = 3038, section = 2 }, ['Red Cross Banner'] = { pos = 3039, section = 2 }, ['Red Dye'] = { pos = 3169, section = 6 }, ['Red Fess Banner'] = { pos = 3040, section = 2 }, ['Red Field Masoned Banner'] = { pos = 3041, section = 2 }, ['Red Firework Star'] = { pos = 819, section = 9 }, ['Red Flask'] = { pos = 1913, section = 36 }, ['Red Flower Charge Banner'] = { pos = 3042, section = 2 }, ['Red Glazed Terracotta'] = { pos = 1516, section = 7 }, ['Red Globe Banner'] = { pos = 49, section = 2 }, ['Red Glow Stick'] = { pos = 2005, section = 33 }, ['Red Gradient Banner'] = { pos = 3043, section = 2 }, ['Red Inverted Chevron Banner'] = { pos = 3044, section = 2 }, ['Red Jar'] = { pos = 1927, section = 37 }, ['Red Key'] = { pos = 452, section = 32 }, ['Red Lozenge Banner'] = { pos = 3045, section = 2 }, ['Red Mushroom'] = { pos = 3439, section = 19 }, ['Red Mushroom Block'] = { pos = 3438, section = 19 }, ['Red Nether Brick Slab'] = { pos = 3297, section = 12 }, ['Red Nether Brick Stairs'] = { pos = 3298, section = 12 }, ['Red Nether Brick Wall'] = { pos = 3299, section = 12 }, ['Red Nether Brick Wall BE'] = { pos = 30, section = 12 }, ['Red Nether Bricks'] = { pos = 1367, section = 12 }, ['Red Pale Banner'] = { pos = 3046, section = 2 }, ['Red Pale Dexter Banner'] = { pos = 3047, section = 2 }, ['Red Pale Sinister Banner'] = { pos = 3048, section = 2 }, ['Red Paly Banner'] = { pos = 3049, section = 2 }, ['Red Per Bend Banner'] = { pos = 3050, section = 2 }, ['Red Per Bend Inverted Banner'] = { pos = 3051, section = 2 }, ['Red Per Bend Sinister Banner'] = { pos = 3052, section = 2 }, ['Red Per Bend Sinister Inverted Banner'] = { pos = 3053, section = 2 }, ['Red Per Fess Banner'] = { pos = 3054, section = 2 }, ['Red Per Fess Inverted Banner'] = { pos = 3055, section = 2 }, ['Red Per Pale Banner'] = { pos = 3056, section = 2 }, ['Red Per Pale Inverted Banner'] = { pos = 3057, section = 2 }, ['Red Piglin Banner'] = { pos = 372, section = 2 }, ['Red Roundel Banner'] = { pos = 3058, section = 2 }, ['Red Saltire Banner'] = { pos = 3059, section = 2 }, ['Red Sand'] = { pos = 3374, section = 15 }, ['Red Sandstone'] = { pos = 3375, section = 15 }, ['Red Sandstone Slab'] = { pos = 3300, section = 12 }, ['Red Sandstone Stairs'] = { pos = 3301, section = 12 }, ['Red Sandstone Wall'] = { pos = 3302, section = 12 }, ['Red Sandstone Wall BE'] = { pos = 31, section = 12 }, ['Red Shield'] = { pos = 2526, section = 1 }, ['Red Shulker Box'] = { pos = 1616, section = 7 }, ['Red Shulker Box Revision 1'] = { pos = 1429, section = 40 }, ['Red Skull Charge Banner'] = { pos = 3060, section = 2 }, ['Red Snout Banner'] = { pos = 372, section = 2 }, ['Red Sparkler'] = { pos = 1763, section = 33 }, ['Red Sparkler (active)'] = { pos = 1764, section = 33 }, ['Red Stained Glass'] = { pos = 785, section = 7 }, ['Red Stained Glass Pane'] = { pos = 786, section = 7 }, ['Red Stained Glass Pane BE'] = { pos = 2021, section = 7 }, ['Red Terracotta'] = { pos = 784, section = 7 }, ['Red Thing Banner'] = { pos = 3061, section = 2 }, ['Red Tinted Glass'] = { pos = 1312, section = 40 }, ['Red Tinted Glass Pane'] = { pos = 16, section = 40 }, ['Red Torch'] = { pos = 1765, section = 33 }, ['Red Tulip'] = { pos = 3440, section = 19 }, ['Red Wood Planks'] = { pos = 257, section = 30 }, ['Red Wool'] = { pos = 1536, section = 7 }, ['Red Wool Revision 2'] = { pos = 787, section = 40 }, Redstone = { pos = 3528, section = 23 }, ['Redstone Comparator'] = { pos = 3345, section = 13 }, ['Redstone Dust'] = { pos = 3528, section = 23 }, ['Redstone Lamp'] = { pos = 3346, section = 13 }, ['Redstone Lamp Post-Flip'] = { pos = 381, section = 29 }, ['Redstone Ore'] = { pos = 3397, section = 18 }, ['Redstone Repeater'] = { pos = 3347, section = 13 }, ['Redstone Revision 1'] = { pos = 1138, section = 29 }, ['Redstone Torch'] = { pos = 3348, section = 13 }, ['Redstone Trim Chainmail Boots'] = { pos = 1124, section = 43 }, ['Redstone Trim Chainmail Chestplate'] = { pos = 1125, section = 43 }, ['Redstone Trim Chainmail Helmet'] = { pos = 1126, section = 43 }, ['Redstone Trim Chainmail Leggings'] = { pos = 1127, section = 43 }, ['Redstone Trim Diamond Boots'] = { pos = 1128, section = 43 }, ['Redstone Trim Diamond Chestplate'] = { pos = 1129, section = 43 }, ['Redstone Trim Diamond Helmet'] = { pos = 1130, section = 43 }, ['Redstone Trim Diamond Leggings'] = { pos = 1131, section = 43 }, ['Redstone Trim Golden Boots'] = { pos = 1132, section = 43 }, ['Redstone Trim Golden Chestplate'] = { pos = 1133, section = 43 }, ['Redstone Trim Golden Helmet'] = { pos = 1134, section = 43 }, ['Redstone Trim Golden Leggings'] = { pos = 1135, section = 43 }, ['Redstone Trim Iron Boots'] = { pos = 1136, section = 43 }, ['Redstone Trim Iron Chestplate'] = { pos = 1137, section = 43 }, ['Redstone Trim Iron Helmet'] = { pos = 1139, section = 43 }, ['Redstone Trim Iron Leggings'] = { pos = 1141, section = 43 }, ['Redstone Trim Leather Boots'] = { pos = 1170, section = 43 }, ['Redstone Trim Leather Cap'] = { pos = 1171, section = 43 }, ['Redstone Trim Leather Pants'] = { pos = 1172, section = 43 }, ['Redstone Trim Leather Tunic'] = { pos = 1173, section = 43 }, ['Redstone Trim Netherite Boots'] = { pos = 1174, section = 43 }, ['Redstone Trim Netherite Chestplate'] = { pos = 1175, section = 43 }, ['Redstone Trim Netherite Helmet'] = { pos = 1176, section = 43 }, ['Redstone Trim Netherite Leggings'] = { pos = 1177, section = 43 }, ['Redstone Trim Turtle Shell'] = { pos = 1178, section = 43 }, ['Reinforced Deepslate'] = { pos = 582, section = 5 }, ['Respawn Anchor'] = { pos = 207, section = 12 }, Rhenium = { pos = 1858, section = 34 }, Rhodium = { pos = 1859, section = 34 }, ['Rib Armor Trim'] = { pos = 802, section = 41 }, ['Rib Armor Trim Smithing Template'] = { pos = 802, section = 41 }, ['Right Curly'] = { pos = 1284, section = 32 }, ['Right Square'] = { pos = 1285, section = 32 }, Roentgenium = { pos = 1860, section = 34 }, ['Rooted Dirt'] = { pos = 463, section = 15 }, Rose = { pos = 1065, section = 29 }, ['Rose BE'] = { pos = 1079, section = 29 }, ['Rose Bush'] = { pos = 3441, section = 19 }, ['Rose Bush 3DS'] = { pos = 1573, section = 29 }, ['Rose Bush BE Revision 2'] = { pos = 1573, section = 29 }, ['Rose Bush LCE Revision 2'] = { pos = 1573, section = 29 }, ['Rose Cloth'] = { pos = 237, section = 40 }, ['Rose Red'] = { pos = 703, section = 6 }, ['Rotten Flesh'] = { pos = 3218, section = 10 }, Rubidium = { pos = 1861, section = 34 }, Ruby = { pos = 1313, section = 29 }, ['Ruby Ore'] = { pos = 2242, section = 29 }, Ruthenium = { pos = 1862, section = 34 }, Rutherfordium = { pos = 1863, section = 34 }, Saddle = { pos = 3582, section = 25 }, ['Salmon Spawn Egg'] = { pos = 1699, section = 24 }, ['Salmon Spawn Egg Revision 1'] = { pos = 1970, section = 39 }, Salt = { pos = 1766, section = 33 }, Samarium = { pos = 1864, section = 34 }, Sand = { pos = 3376, section = 15 }, Sandstone = { pos = 3377, section = 15 }, ['Sandstone Slab'] = { pos = 3303, section = 12 }, ['Sandstone Stairs'] = { pos = 3304, section = 12 }, ['Sandstone Stairs Left'] = { pos = 2262, section = 42 }, ['Sandstone Wall'] = { pos = 3305, section = 12 }, ['Sandstone Wall BE'] = { pos = 32, section = 12 }, ['Savanna Village Map'] = { pos = 1326, section = 25 }, ['Savanna Village Map BE'] = { pos = 1327, section = 25 }, Scaffolding = { pos = 2414, section = 12 }, ['Scaffolding BE'] = { pos = 1068, section = 12 }, Scandium = { pos = 1865, section = 34 }, Sculk = { pos = 556, section = 15 }, ['Sculk Block'] = { pos = 556, section = 15 }, ['Sculk Catalyst'] = { pos = 557, section = 15 }, ['Sculk Catalyst BE'] = { pos = 628, section = 15 }, ['Sculk Sensor'] = { pos = 439, section = 13 }, ['Sculk Sensor BE'] = { pos = 458, section = 13 }, ['Sculk Shrieker'] = { pos = 613, section = 15 }, ['Sculk Shrieker BE'] = { pos = 558, section = 15 }, ['Sculk Vein'] = { pos = 559, section = 15 }, Scute = { pos = 1684, section = 23 }, ['Sea Lantern BE'] = { pos = 209, section = 15 }, ['Sea Pickle'] = { pos = 1736, section = 19 }, Seaborgium = { pos = 1866, section = 34 }, Seagrass = { pos = 2029, section = 19 }, Seeds = { pos = 1067, section = 19 }, Selenium = { pos = 1867, section = 34 }, ['Sentry Armor Trim'] = { pos = 803, section = 41 }, ['Sentry Armor Trim Smithing Template'] = { pos = 803, section = 41 }, ['Shaper Armor Trim'] = { pos = 1216, section = 41 }, ['Shaper Armor Trim Smithing Template'] = { pos = 1216, section = 41 }, ['Sheaf Pottery Sherd'] = { pos = 1233, section = 44 }, Shears = { pos = 3583, section = 25 }, ['Sheep Spawn Egg'] = { pos = 1158, section = 24 }, ['Sheep Spawn Egg Revision 1'] = { pos = 1392, section = 39 }, ['Shelter Pottery Sherd'] = { pos = 1234, section = 44 }, Shield = { pos = 2527, section = 1 }, ['Short Tag'] = { pos = 1286, section = 32 }, Shroomlight = { pos = 151, section = 16 }, ['Shroomlight BE'] = { pos = 211, section = 16 }, ['Shrub LCE'] = { pos = 1039, section = 19 }, ['Shulker Box'] = { pos = 1615, section = 7 }, ['Shulker Shell'] = { pos = 3529, section = 23 }, ['Shulker Spawn Egg'] = { pos = 1159, section = 24 }, ['Shulker Spawn Egg Revision 1'] = { pos = 1564, section = 39 }, ['Sign Revision 1'] = { pos = 354, section = 29 }, ['Silence Armor Trim'] = { pos = 1217, section = 41 }, ['Silence Armor Trim Smithing Template'] = { pos = 1217, section = 41 }, Silicon = { pos = 1868, section = 34 }, Silver = { pos = 1775, section = 34 }, ['Silver Balloon'] = { pos = 1945, section = 33 }, ['Silverfish Spawn Egg'] = { pos = 1160, section = 24 }, ['Silverfish Spawn Egg Revision 1'] = { pos = 1393, section = 39 }, ['Silverfish Spawn Egg Revision 2'] = { pos = 1565, section = 39 }, ['Skeleton Horse Spawn Egg'] = { pos = 1376, section = 24 }, ['Skeleton Skull'] = { pos = 967, section = 14 }, ['Skeleton Skull BE'] = { pos = 218, section = 14 }, ['Skeleton Spawn Egg'] = { pos = 1161, section = 24 }, ['Skeleton Spawn Egg Revision 1'] = { pos = 1394, section = 39 }, ['Skull Pottery Sherd'] = { pos = 1204, section = 44 }, Slate = { pos = 1596, section = 20 }, ['Slightly Damaged Anvil'] = { pos = 1253, section = 26 }, ['Slime Block'] = { pos = 920, section = 12 }, ['Slime Spawn Egg'] = { pos = 1162, section = 24 }, ['Slime Spawn Egg Revision 1'] = { pos = 1395, section = 39 }, Slimeball = { pos = 3530, section = 23 }, ['Small Amethyst Bud'] = { pos = 427, section = 15 }, ['Small Dripleaf'] = { pos = 470, section = 19 }, ['Smarter Watch'] = { pos = 1639, section = 32 }, ['Smithing Table'] = { pos = 2454, section = 26 }, ['Smithing Table Revision 1'] = { pos = 2447, section = 26 }, ['Smithing Template'] = { pos = 801, section = 41 }, Smoker = { pos = 2448, section = 26 }, ['Smooth Basalt'] = { pos = 519, section = 15 }, ['Smooth Quartz'] = { pos = 867, section = 12 }, ['Smooth Quartz Block'] = { pos = 867, section = 12 }, ['Smooth Quartz Slab'] = { pos = 3306, section = 12 }, ['Smooth Quartz Stairs'] = { pos = 3307, section = 12 }, ['Smooth Red Sandstone'] = { pos = 3310, section = 12 }, ['Smooth Red Sandstone Slab'] = { pos = 3308, section = 12 }, ['Smooth Red Sandstone Stairs'] = { pos = 3309, section = 12 }, ['Smooth Sandstone'] = { pos = 3313, section = 12 }, ['Smooth Sandstone Slab'] = { pos = 3311, section = 12 }, ['Smooth Sandstone Stairs'] = { pos = 3312, section = 12 }, ['Smooth Stone'] = { pos = 923, section = 12 }, ['Smooth Stone Bricks'] = { pos = 3380, section = 15 }, ['Smooth Stone Slab'] = { pos = 3314, section = 12 }, ['Sniffer Egg'] = { pos = 1211, section = 5 }, ['Sniffer Spawn Egg'] = { pos = 1205, section = 24 }, ['Snort Pottery Sherd'] = { pos = 1236, section = 44 }, ['Snout Armor Trim'] = { pos = 808, section = 41 }, ['Snout Armor Trim Smithing Template'] = { pos = 808, section = 41 }, Snow = { pos = 3378, section = 15 }, ['Snow Block'] = { pos = 3315, section = 12 }, ['Snow Golem Spawn Egg'] = { pos = 697, section = 24 }, Snowball = { pos = 3638, section = 28 }, ['Snowy Village Map'] = { pos = 1326, section = 25 }, ['Snowy Village Map BE'] = { pos = 1327, section = 25 }, Soap = { pos = 1915, section = 37 }, Sodium = { pos = 1836, section = 34 }, ['Sodium Acetate'] = { pos = 1915, section = 37 }, ['Sodium Fluoride'] = { pos = 1897, section = 35 }, ['Sodium Hydride'] = { pos = 1923, section = 37 }, ['Sodium Hypochlorite'] = { pos = 1889, section = 35 }, ['Sodium Oxide'] = { pos = 1915, section = 37 }, ['Soul Campfire'] = { pos = 287, section = 26 }, ['Soul Fire Lantern Revision 1'] = { pos = 195, section = 29 }, ['Soul Lantern'] = { pos = 157, section = 26 }, ['Soul Sand'] = { pos = 3388, section = 16 }, ['Soul Soil'] = { pos = 152, section = 16 }, ['Soul Torch'] = { pos = 156, section = 17 }, ['Spawn Agent'] = { pos = 2379, section = 24 }, ['Spawn Allay'] = { pos = 901, section = 24 }, ['Spawn Axolotl'] = { pos = 440, section = 24 }, ['Spawn Bat'] = { pos = 1142, section = 24 }, ['Spawn Bee'] = { pos = 104, section = 24 }, ['Spawn Blaze'] = { pos = 1143, section = 24 }, ['Spawn Camel'] = { pos = 683, section = 24 }, ['Spawn Cat'] = { pos = 2380, section = 24 }, ['Spawn Cat BE'] = { pos = 2380, section = 24 }, ['Spawn Cave Spider'] = { pos = 1144, section = 24 }, ['Spawn Chicken'] = { pos = 1145, section = 24 }, ['Spawn Cod'] = { pos = 1697, section = 24 }, ['Spawn Cow'] = { pos = 1146, section = 24 }, ['Spawn Creeper'] = { pos = 1147, section = 24 }, ['Spawn Dolphin'] = { pos = 1967, section = 24 }, ['Spawn Donkey'] = { pos = 1371, section = 24 }, ['Spawn Drowned'] = { pos = 1727, section = 24 }, ['Spawn Egg'] = { pos = 2361, section = 39 }, ['Spawn Elder Guardian'] = { pos = 1372, section = 24 }, ['Spawn Ender Dragon'] = { pos = 695, section = 24 }, ['Spawn Enderman'] = { pos = 1148, section = 24 }, ['Spawn Endermite'] = { pos = 1149, section = 24 }, ['Spawn Evoker'] = { pos = 1411, section = 24 }, ['Spawn Firefly'] = { pos = 632, section = 24 }, ['Spawn Fox'] = { pos = 2464, section = 24 }, ['Spawn Frog'] = { pos = 575, section = 24 }, ['Spawn Ghast'] = { pos = 1150, section = 24 }, ['Spawn Glow Squid'] = { pos = 457, section = 24 }, ['Spawn Goat'] = { pos = 392, section = 24 }, ['Spawn Guardian'] = { pos = 1151, section = 24 }, ['Spawn Hoglin'] = { pos = 194, section = 24 }, ['Spawn Horse'] = { pos = 1152, section = 24 }, ['Spawn Husk'] = { pos = 1373, section = 24 }, ['Spawn Iron Golem'] = { pos = 696, section = 24 }, ['Spawn Llama'] = { pos = 1412, section = 24 }, ['Spawn Magma Cube'] = { pos = 1153, section = 24 }, ['Spawn Mask'] = { pos = 2381, section = 24 }, ['Spawn Mooshroom'] = { pos = 1154, section = 24 }, ['Spawn Mule'] = { pos = 1374, section = 24 }, ['Spawn NPC'] = { pos = 1590, section = 24 }, ['Spawn Ocelot'] = { pos = 1155, section = 24 }, ['Spawn Panda'] = { pos = 2374, section = 24 }, ['Spawn Panda BE'] = { pos = 2374, section = 24 }, ['Spawn Parrot'] = { pos = 1544, section = 24 }, ['Spawn Phantom'] = { pos = 1974, section = 24 }, ['Spawn Pig'] = { pos = 1156, section = 24 }, ['Spawn Piglin Brute'] = { pos = 262, section = 24 }, ['Spawn Pillager'] = { pos = 2413, section = 24 }, ['Spawn Polar Bear'] = { pos = 1375, section = 24 }, ['Spawn Pufferfish'] = { pos = 1698, section = 24 }, ['Spawn Rabbit'] = { pos = 1157, section = 24 }, ['Spawn Ravager'] = { pos = 2411, section = 24 }, ['Spawn Salmon'] = { pos = 1699, section = 24 }, ['Spawn Sheep'] = { pos = 1158, section = 24 }, ['Spawn Shulker'] = { pos = 1159, section = 24 }, ['Spawn Silverfish'] = { pos = 1160, section = 24 }, ['Spawn Skeleton'] = { pos = 1161, section = 24 }, ['Spawn Skeleton Horse'] = { pos = 1376, section = 24 }, ['Spawn Slime'] = { pos = 1162, section = 24 }, ['Spawn Snow Golem'] = { pos = 697, section = 24 }, ['Spawn Spider'] = { pos = 1163, section = 24 }, ['Spawn Squid'] = { pos = 1164, section = 24 }, ['Spawn Stray'] = { pos = 1377, section = 24 }, ['Spawn Strider'] = { pos = 223, section = 24 }, ['Spawn Tadpole'] = { pos = 576, section = 24 }, ['Spawn Trader Llama'] = { pos = 2462, section = 24 }, ['Spawn Tropical Fish'] = { pos = 1722, section = 24 }, ['Spawn Turtle'] = { pos = 1729, section = 24 }, ['Spawn Vex'] = { pos = 1413, section = 24 }, ['Spawn Villager'] = { pos = 1165, section = 24 }, ['Spawn Vindicator'] = { pos = 1414, section = 24 }, ['Spawn Wandering Trader'] = { pos = 389, section = 24 }, ['Spawn Wandering Trader BE'] = { pos = 389, section = 24 }, ['Spawn Warden'] = { pos = 581, section = 24 }, ['Spawn Witch'] = { pos = 1166, section = 24 }, ['Spawn Wither Skeleton'] = { pos = 1378, section = 24 }, ['Spawn Wolf'] = { pos = 1167, section = 24 }, ['Spawn Zoglin'] = { pos = 268, section = 24 }, ['Spawn Zombie'] = { pos = 1168, section = 24 }, ['Spawn Zombie Horse'] = { pos = 1379, section = 24 }, ['Spawn Zombie Pigman'] = { pos = 1169, section = 24 }, ['Spawn Zombie Villager'] = { pos = 1349, section = 24 }, Spawner = { pos = 985, section = 15 }, ['Spectral Arrow'] = { pos = 3639, section = 28 }, ['Spectral Arrow Revision 1'] = { pos = 1291, section = 28 }, ['Spider Eye'] = { pos = 3145, section = 3 }, ['Spider Spawn Egg'] = { pos = 1163, section = 24 }, ['Spider Spawn Egg Revision 1'] = { pos = 1396, section = 39 }, ['Spire Armor Trim'] = { pos = 822, section = 41 }, ['Spire Armor Trim Smithing Template'] = { pos = 822, section = 41 }, ['Splash Awkward Potion Revision 1'] = { pos = 332, section = 47 }, ['Splash Bottle of Mob'] = { pos = 1287, section = 32 }, ['Splash Mundane Potion'] = { pos = 1100, section = 22 }, ['Splash Mundane Potion Revision 1'] = { pos = 333, section = 47 }, ['Splash Potion of Big'] = { pos = 1288, section = 32 }, ['Splash Potion of Decay'] = { pos = 1404, section = 22 }, ['Splash Potion of Fire Resistance'] = { pos = 3468, section = 22 }, ['Splash Potion of Fire Resistance Revision 1'] = { pos = 334, section = 47 }, ['Splash Potion of Harming'] = { pos = 3469, section = 22 }, ['Splash Potion of Harming Revision 1'] = { pos = 335, section = 47 }, ['Splash Potion of Healing'] = { pos = 3470, section = 22 }, ['Splash Potion of Healing Revision 1'] = { pos = 336, section = 47 }, ['Splash Potion of Invisibility'] = { pos = 3471, section = 22 }, ['Splash Potion of Invisibility Revision 1'] = { pos = 337, section = 47 }, ['Splash Potion of Leaping'] = { pos = 3472, section = 22 }, ['Splash Potion of Leaping Revision 1'] = { pos = 338, section = 47 }, ['Splash Potion of Levitation'] = { pos = 115, section = 22 }, ['Splash Potion of Luck'] = { pos = 3473, section = 22 }, ['Splash Potion of Luck Revision 1'] = { pos = 339, section = 47 }, ['Splash Potion of Night Vision'] = { pos = 3474, section = 22 }, ['Splash Potion of Night Vision Revision 1'] = { pos = 340, section = 47 }, ['Splash Potion of Poison'] = { pos = 3475, section = 22 }, ['Splash Potion of Poison Revision 1'] = { pos = 341, section = 47 }, ['Splash Potion of Regeneration'] = { pos = 3476, section = 22 }, ['Splash Potion of Regeneration Revision 1'] = { pos = 342, section = 47 }, ['Splash Potion of Slow Falling'] = { pos = 3477, section = 22 }, ['Splash Potion of Slow Falling Revision 1'] = { pos = 343, section = 47 }, ['Splash Potion of Slowness'] = { pos = 3478, section = 22 }, ['Splash Potion of Slowness Revision 1'] = { pos = 344, section = 47 }, ['Splash Potion of Small'] = { pos = 1289, section = 32 }, ['Splash Potion of Strength'] = { pos = 3479, section = 22 }, ['Splash Potion of Strength Revision 1'] = { pos = 345, section = 47 }, ['Splash Potion of Swiftness'] = { pos = 3480, section = 22 }, ['Splash Potion of Swiftness Revision 1'] = { pos = 346, section = 47 }, ['Splash Potion of the Turtle Master'] = { pos = 3481, section = 22 }, ['Splash Potion of the Turtle Master Revision 1'] = { pos = 347, section = 47 }, ['Splash Potion of Water Breathing'] = { pos = 3467, section = 22 }, ['Splash Potion of Water Breathing Revision 1'] = { pos = 348, section = 47 }, ['Splash Potion of Weakness'] = { pos = 3482, section = 22 }, ['Splash Thick Potion Revision 1'] = { pos = 349, section = 47 }, ['Splash Uncraftable Potion Revision 1'] = { pos = 350, section = 47 }, ['Splash Water Bottle'] = { pos = 1100, section = 22 }, ['Splash Water Bottle Revision 1'] = { pos = 351, section = 47 }, Sponge = { pos = 3613, section = 26 }, ['Sponge Revision 1'] = { pos = 2243, section = 29 }, ['Spore Blossom'] = { pos = 471, section = 19 }, ['Spring Green Cloth'] = { pos = 240, section = 40 }, ['Spruce Boat'] = { pos = 634, section = 27 }, ['Spruce Boat Revision 2'] = { pos = 3629, section = 29 }, ['Spruce Boat with Chest'] = { pos = 619, section = 27 }, ['Spruce Boat with Chest BE Revision 1'] = { pos = 617, section = 29 }, ['Spruce Button'] = { pos = 3349, section = 13 }, ['Spruce Door'] = { pos = 572, section = 13 }, ['Spruce Door Revision 3'] = { pos = 954, section = 13 }, ['Spruce Fence'] = { pos = 642, section = 12 }, ['Spruce Fence BE'] = { pos = 3317, section = 12 }, ['Spruce Fence Gate'] = { pos = 3316, section = 13 }, ['Spruce Fence Gate BE'] = { pos = 57, section = 13 }, ['Spruce Hanging Sign'] = { pos = 660, section = 5 }, ['Spruce Leaves'] = { pos = 3442, section = 19 }, ['Spruce Log'] = { pos = 3443, section = 19 }, ['Spruce Log Revision 1'] = { pos = 2244, section = 29 }, ['Spruce Planks'] = { pos = 929, section = 12 }, ['Spruce Pressure Plate'] = { pos = 3350, section = 13 }, ['Spruce Sapling'] = { pos = 3444, section = 19 }, ['Spruce Sign'] = { pos = 2394, section = 17 }, ['Spruce Slab'] = { pos = 3318, section = 12 }, ['Spruce Stairs'] = { pos = 3319, section = 12 }, ['Spruce Stairs Left'] = { pos = 2263, section = 42 }, ['Spruce Trapdoor'] = { pos = 1647, section = 13 }, ['Spruce Wood'] = { pos = 3320, section = 12 }, ['Spruce Wood Button'] = { pos = 3349, section = 13 }, ['Spruce Wood Door'] = { pos = 572, section = 13 }, ['Spruce Wood Fence'] = { pos = 642, section = 12 }, ['Spruce Wood Fence Gate'] = { pos = 3316, section = 13 }, ['Spruce Wood Planks'] = { pos = 929, section = 12 }, ['Spruce Wood Pressure Plate'] = { pos = 3350, section = 13 }, ['Spruce Wood Sign'] = { pos = 2394, section = 17 }, ['Spruce Wood Slab'] = { pos = 3318, section = 12 }, ['Spruce Wood Stairs'] = { pos = 3319, section = 12 }, ['Spruce Wood Trapdoor'] = { pos = 1647, section = 13 }, Spyglass = { pos = 428, section = 25 }, ['Squid Spawn Egg'] = { pos = 1164, section = 24 }, ['Squid Spawn Egg Revision 1'] = { pos = 1397, section = 39 }, ['Sssyntax Error'] = { pos = 1290, section = 32 }, Stannum = { pos = 1869, section = 34 }, Steak = { pos = 848, section = 10 }, Stibium = { pos = 1774, section = 34 }, Stick = { pos = 1140, section = 23 }, ['Sticky Piston'] = { pos = 3351, section = 13 }, ['Still Lava'] = { pos = 2119, section = 29 }, Stone = { pos = 1000, section = 15 }, ['Stone Axe'] = { pos = 3584, section = 25 }, ['Stone Brick Slab'] = { pos = 933, section = 12 }, ['Stone Brick Stairs'] = { pos = 3322, section = 12 }, ['Stone Brick Stairs Left'] = { pos = 2264, section = 42 }, ['Stone Brick Wall'] = { pos = 3323, section = 12 }, ['Stone Brick Wall BE'] = { pos = 33, section = 12 }, ['Stone Bricks'] = { pos = 3380, section = 15 }, ['Stone Bricks Monster Egg'] = { pos = 3380, section = 15 }, ['Stone Button'] = { pos = 3352, section = 13 }, ['Stone Heart'] = { pos = 121, section = 32 }, ['Stone Hoe'] = { pos = 3585, section = 25 }, ['Stone Monster Egg'] = { pos = 1000, section = 15 }, ['Stone Pickaxe'] = { pos = 3586, section = 25 }, ['Stone Pressure Plate'] = { pos = 3353, section = 13 }, ['Stone Pressure Plate Revision 1'] = { pos = 2091, section = 29 }, ['Stone Revision 2'] = { pos = 376, section = 29 }, ['Stone Shovel'] = { pos = 3587, section = 25 }, ['Stone Slab'] = { pos = 3324, section = 12 }, ['Stone Stairs'] = { pos = 3325, section = 12 }, ['Stone Sword'] = { pos = 3640, section = 28 }, ['Stonecutter BE'] = { pos = 1082, section = 20 }, ['Stonecutter Revision 1'] = { pos = 2449, section = 26 }, ['Stray Spawn Egg'] = { pos = 1377, section = 24 }, ['Stray Spawn Egg Revision 1'] = { pos = 1566, section = 39 }, ['Strider Spawn Egg'] = { pos = 223, section = 24 }, String = { pos = 3531, section = 23 }, ['String Tag'] = { pos = 1292, section = 32 }, ['Stripped Acacia Log'] = { pos = 1670, section = 12 }, ['Stripped Acacia Wood'] = { pos = 2103, section = 12 }, ['Stripped Birch Log'] = { pos = 1671, section = 12 }, ['Stripped Birch Wood'] = { pos = 2101, section = 12 }, ['Stripped Cherry Log'] = { pos = 1186, section = 12 }, ['Stripped Cherry Wood'] = { pos = 1187, section = 12 }, ['Stripped Crimson Hyphae'] = { pos = 200, section = 16 }, ['Stripped Crimson Stem'] = { pos = 175, section = 16 }, ['Stripped Dark Oak Log'] = { pos = 1672, section = 12 }, ['Stripped Dark Oak Wood'] = { pos = 2104, section = 12 }, ['Stripped Jungle Log'] = { pos = 1673, section = 12 }, ['Stripped Jungle Wood'] = { pos = 2102, section = 12 }, ['Stripped Mangrove Log'] = { pos = 597, section = 12 }, ['Stripped Mangrove Wood'] = { pos = 598, section = 12 }, ['Stripped Oak Log'] = { pos = 1674, section = 12 }, ['Stripped Oak Wood'] = { pos = 2099, section = 12 }, ['Stripped Spruce Log'] = { pos = 1675, section = 12 }, ['Stripped Spruce Wood'] = { pos = 2100, section = 12 }, ['Stripped Warped Hyphae'] = { pos = 201, section = 16 }, ['Stripped Warped Stem'] = { pos = 176, section = 16 }, Strontium = { pos = 1870, section = 34 }, ['Structure Block'] = { pos = 1380, section = 26 }, ['Structure Void'] = { pos = 3614, section = 26 }, ['Structure Void BE'] = { pos = 60, section = 26 }, ['Studded Boots'] = { pos = 2172, section = 30 }, ['Studded Chestplate'] = { pos = 2173, section = 30 }, ['Studded Helmet'] = { pos = 2174, section = 30 }, ['Studded Leggings'] = { pos = 2175, section = 30 }, Sugar = { pos = 3219, section = 10 }, ['Sugar Cane'] = { pos = 548, section = 19 }, ['Sugar Cane Revision 2'] = { pos = 3445, section = 29 }, Sulfate = { pos = 1915, section = 37 }, Sulfur = { pos = 1871, section = 34 }, Sunflower = { pos = 3446, section = 19 }, ['Super Fertilizer'] = { pos = 1767, section = 33 }, ['Suspicious Gravel'] = { pos = 1210, section = 15 }, ['Suspicious Sand'] = { pos = 1193, section = 15 }, ['Suspicious Stew'] = { pos = 2398, section = 10 }, ['Swaggiest stairs ever'] = { pos = 486, section = 32 }, ['Swamp Explorer Map'] = { pos = 1326, section = 25 }, ['Swamp Explorer Map BE'] = { pos = 1327, section = 25 }, ['Sweet Berries'] = { pos = 2457, section = 10 }, ['Tadpole Spawn Egg'] = { pos = 576, section = 24 }, Tag = { pos = 1293, section = 32 }, ['Taiga Village Map'] = { pos = 1326, section = 25 }, ['Taiga Village Map BE'] = { pos = 1327, section = 25 }, ['Tall Grass'] = { pos = 3447, section = 19 }, Tantalum = { pos = 1872, section = 34 }, Target = { pos = 196, section = 13 }, Technetium = { pos = 1873, section = 34 }, Tellurium = { pos = 1874, section = 34 }, Tennessine = { pos = 1875, section = 34 }, Terbium = { pos = 1876, section = 34 }, Terracotta = { pos = 3381, section = 15 }, Thallium = { pos = 1877, section = 34 }, ['Thick Lingering Potion'] = { pos = 1097, section = 31 }, ['Thick Potion'] = { pos = 1083, section = 21 }, ['Thick Potion Revision 1'] = { pos = 309, section = 45 }, ['Thick Splash Potion'] = { pos = 1100, section = 22 }, Thorium = { pos = 1878, section = 34 }, Thulium = { pos = 1879, section = 34 }, ['Tide Armor Trim'] = { pos = 823, section = 41 }, ['Tide Armor Trim Smithing Template'] = { pos = 823, section = 41 }, ['tile.info_update.name'] = { pos = 357, section = 30 }, Tin = { pos = 1869, section = 34 }, ['Tinted Glass'] = { pos = 431, section = 12 }, ['Tipped Arrow'] = { pos = 1266, section = 28 }, Titanium = { pos = 1880, section = 34 }, TNT = { pos = 3615, section = 26 }, Tonic = { pos = 1768, section = 33 }, ['Top Snow'] = { pos = 999, section = 15 }, Torch = { pos = 3390, section = 17 }, ['Torch Revision 1'] = { pos = 2092, section = 29 }, Torchflower = { pos = 1199, section = 19 }, ['Torchflower Seeds'] = { pos = 1200, section = 19 }, ['Totem of Undying'] = { pos = 3641, section = 28 }, ['Trader Llama Spawn Egg'] = { pos = 2462, section = 24 }, ['Transition metal'] = { pos = 75, section = 34 }, ['Trapped Chest'] = { pos = 3616, section = 26 }, ['Trapped Chest BE'] = { pos = 59, section = 26 }, ['Treasure Map'] = { pos = 123, section = 25 }, Trident = { pos = 1716, section = 28 }, ['Trident Revision 1'] = { pos = 1680, section = 29 }, ['Tripwire Hook'] = { pos = 3354, section = 13 }, ['Tropical Fish'] = { pos = 1689, section = 10 }, ['Tropical Fish Bucket Revision 1'] = { pos = 1685, section = 29 }, ['Tropical Fish Spawn Egg'] = { pos = 1722, section = 24 }, ['Tropical Fish Spawn Egg Revision 1'] = { pos = 1971, section = 39 }, ['Tube Coral'] = { pos = 1711, section = 15 }, ['Tube Coral Block'] = { pos = 1706, section = 15 }, ['Tube Coral Block Revision 1'] = { pos = 1700, section = 29 }, ['Tube Coral Fan'] = { pos = 2135, section = 15 }, ['Tube Coral Fan Revision 1'] = { pos = 1695, section = 29 }, ['Tube Coral Fan Revision 2'] = { pos = 2143, section = 29 }, Tuff = { pos = 433, section = 15 }, Tungsten = { pos = 1881, section = 34 }, ['Tungsten Chloride'] = { pos = 1917, section = 37 }, ['Turtle Egg'] = { pos = 1972, section = 5 }, ['Turtle Egg Revision 1'] = { pos = 1668, section = 29 }, ['Turtle Helmet'] = { pos = 1681, section = 1 }, ['Turtle Shell'] = { pos = 1681, section = 1 }, ['Turtle Spawn Egg'] = { pos = 1729, section = 24 }, ['Twisting Vines'] = { pos = 203, section = 16 }, ['Ultramarine Cloth'] = { pos = 228, section = 40 }, ['Uncraftable Lingering Potion'] = { pos = 3500, section = 31 }, ['Uncraftable Potion'] = { pos = 1403, section = 21 }, ['Uncraftable Potion Revision 1'] = { pos = 310, section = 45 }, ['Uncraftable Splash Potion'] = { pos = 3483, section = 22 }, ['Uncraftable Tipped Arrow'] = { pos = 1409, section = 28 }, ['Underwater TNT'] = { pos = 1946, section = 33 }, ['Underwater Torch'] = { pos = 1769, section = 33 }, Uranium = { pos = 1882, section = 34 }, ['USB Charger'] = { pos = 1640, section = 32 }, ['USB Charger Block'] = { pos = 1640, section = 32 }, Vanadium = { pos = 1883, section = 34 }, ['Verdant Froglight'] = { pos = 584, section = 12 }, ['Verdant Froglight BE'] = { pos = 580, section = 12 }, ['Very Damaged Anvil'] = { pos = 1257, section = 26 }, ['Vex Armor Trim'] = { pos = 824, section = 41 }, ['Vex Armor Trim Smithing Template'] = { pos = 824, section = 41 }, ['Vex Spawn Egg'] = { pos = 1413, section = 24 }, ['Village Map'] = { pos = 1326, section = 25 }, ['Village Map BE'] = { pos = 1327, section = 25 }, ['Villager Spawn Egg'] = { pos = 1165, section = 24 }, ['Villager Spawn Egg Revision 1'] = { pos = 1398, section = 39 }, ['Vindicator Spawn Egg'] = { pos = 1414, section = 24 }, Vines = { pos = 3448, section = 19 }, ['Violet Cloth'] = { pos = 238, section = 40 }, ['Void Air'] = { pos = 2363, section = 15 }, ['Wandering Trader Spawn Egg'] = { pos = 2463, section = 24 }, ['Ward Armor Trim'] = { pos = 826, section = 41 }, ['Ward Armor Trim Smithing Template'] = { pos = 826, section = 41 }, ['Warden Spawn Egg'] = { pos = 581, section = 24 }, ['Warped Button'] = { pos = 171, section = 13 }, ['Warped Door'] = { pos = 172, section = 13 }, ['Warped Fence'] = { pos = 649, section = 12 }, ['Warped Fence BE'] = { pos = 164, section = 12 }, ['Warped Fence Gate'] = { pos = 180, section = 13 }, ['Warped Fence Gate BE'] = { pos = 383, section = 13 }, ['Warped Fungus'] = { pos = 159, section = 16 }, ['Warped Fungus on a Stick'] = { pos = 224, section = 25 }, ['Warped Hanging Sign'] = { pos = 661, section = 5 }, ['Warped Hyphae'] = { pos = 199, section = 16 }, ['Warped Nylium'] = { pos = 153, section = 16 }, ['Warped Planks'] = { pos = 147, section = 12 }, ['Warped Pressure Plate'] = { pos = 173, section = 13 }, ['Warped Roots'] = { pos = 192, section = 16 }, ['Warped Sign'] = { pos = 178, section = 17 }, ['Warped Slab'] = { pos = 165, section = 12 }, ['Warped Stairs'] = { pos = 166, section = 12 }, ['Warped Stem'] = { pos = 154, section = 16 }, ['Warped Trapdoor'] = { pos = 174, section = 13 }, ['Warped Wart Block'] = { pos = 155, section = 16 }, Water = { pos = 2127, section = 11 }, ['Water (compound)'] = { pos = 1892, section = 35 }, ['Water BE'] = { pos = 2128, section = 11 }, ['Water Block'] = { pos = 2118, section = 29 }, ['Water Bottle'] = { pos = 1083, section = 21 }, ['Water Bottle Revision 1'] = { pos = 311, section = 45 }, ['Water Bucket'] = { pos = 3149, section = 4 }, ['Water Revision 2'] = { pos = 851, section = 29 }, ['Wax Block'] = { pos = 96, section = 30 }, ['Waxed Block of Copper'] = { pos = 401, section = 12 }, ['Waxed Copper'] = { pos = 401, section = 12 }, ['Waxed Copper Block'] = { pos = 401, section = 12 }, ['Waxed Cut Copper'] = { pos = 402, section = 12 }, ['Waxed Cut Copper Block'] = { pos = 402, section = 12 }, ['Waxed Cut Copper Slab'] = { pos = 403, section = 12 }, ['Waxed Cut Copper Stairs'] = { pos = 404, section = 12 }, ['Waxed Exposed Copper'] = { pos = 411, section = 12 }, ['Waxed Exposed Copper Block'] = { pos = 411, section = 12 }, ['Waxed Exposed Cut Copper'] = { pos = 412, section = 12 }, ['Waxed Exposed Cut Copper Block'] = { pos = 412, section = 12 }, ['Waxed Exposed Cut Copper Slab'] = { pos = 413, section = 12 }, ['Waxed Exposed Cut Copper Stairs'] = { pos = 414, section = 12 }, ['Waxed Oxidized Copper'] = { pos = 441, section = 12 }, ['Waxed Oxidized Copper Block'] = { pos = 441, section = 12 }, ['Waxed Oxidized Cut Copper'] = { pos = 442, section = 12 }, ['Waxed Oxidized Cut Copper Block'] = { pos = 442, section = 12 }, ['Waxed Oxidized Cut Copper Slab'] = { pos = 443, section = 12 }, ['Waxed Oxidized Cut Copper Stairs'] = { pos = 444, section = 12 }, ['Waxed Weathered Copper'] = { pos = 424, section = 12 }, ['Waxed Weathered Copper Block'] = { pos = 424, section = 12 }, ['Waxed Weathered Cut Copper'] = { pos = 425, section = 12 }, ['Waxed Weathered Cut Copper Block'] = { pos = 425, section = 12 }, ['Waxed Weathered Cut Copper Slab'] = { pos = 423, section = 12 }, ['Waxed Weathered Cut Copper Stairs'] = { pos = 426, section = 12 }, ['Wayfinder Armor Trim'] = { pos = 1218, section = 41 }, ['Wayfinder Armor Trim Smithing Template'] = { pos = 1218, section = 41 }, ['Weathered Copper'] = { pos = 424, section = 12 }, ['Weathered Copper Block'] = { pos = 424, section = 12 }, ['Weathered Cut Copper'] = { pos = 425, section = 12 }, ['Weathered Cut Copper Block'] = { pos = 425, section = 12 }, ['Weathered Cut Copper Slab'] = { pos = 423, section = 12 }, ['Weathered Cut Copper Stairs'] = { pos = 426, section = 12 }, ['Weeping Vines'] = { pos = 160, section = 16 }, ['Wet Sponge'] = { pos = 3617, section = 26 }, Wheat = { pos = 3220, section = 10 }, ['Wheat Seeds'] = { pos = 1067, section = 19 }, ['White Balloon'] = { pos = 1947, section = 33 }, ['White Banner'] = { pos = 788, section = 7 }, ['White Banner 15w14a'] = { pos = 487, section = 32 }, ['White Base Banner'] = { pos = 3062, section = 2 }, ['White Base Dexter Canton Banner'] = { pos = 3063, section = 2 }, ['White Base Gradient Banner'] = { pos = 3064, section = 2 }, ['White Base Indented Banner'] = { pos = 3065, section = 2 }, ['White Base Sinister Canton Banner'] = { pos = 3066, section = 2 }, ['White Beaker'] = { pos = 1897, section = 35 }, ['White Bed'] = { pos = 3185, section = 7 }, ['White Bed BE'] = { pos = 1559, section = 7 }, ['White Bed LCE'] = { pos = 1559, section = 7 }, ['White Bend Banner'] = { pos = 3067, section = 2 }, ['White Bend Sinister Banner'] = { pos = 3068, section = 2 }, ['White Bordure Banner'] = { pos = 3069, section = 2 }, ['White Bordure Indented Banner'] = { pos = 3070, section = 2 }, ['White Candle'] = { pos = 437, section = 7 }, ['White Carpet'] = { pos = 1635, section = 7 }, ['White Carpet Revision 1'] = { pos = 789, section = 40 }, ['White Chevron Banner'] = { pos = 3071, section = 2 }, ['White Chief Banner'] = { pos = 3072, section = 2 }, ['White Chief Dexter Canton Banner'] = { pos = 3073, section = 2 }, ['White Chief Indented Banner'] = { pos = 3074, section = 2 }, ['White Chief Sinister Canton Banner'] = { pos = 3075, section = 2 }, ['White Cloth'] = { pos = 242, section = 40 }, ['White Concrete'] = { pos = 1517, section = 7 }, ['White Concrete Powder'] = { pos = 1518, section = 7 }, ['White Creeper Charge Banner'] = { pos = 3076, section = 2 }, ['White Cross Banner'] = { pos = 3077, section = 2 }, ['White Dye'] = { pos = 2378, section = 6 }, ['White Fess Banner'] = { pos = 3078, section = 2 }, ['White Field Masoned Banner'] = { pos = 3079, section = 2 }, ['White Firework Star'] = { pos = 820, section = 9 }, ['White Flask'] = { pos = 1907, section = 36 }, ['White Flower Charge Banner'] = { pos = 3080, section = 2 }, ['White Glazed Terracotta'] = { pos = 1543, section = 7 }, ['White Glazed Terracotta Revision 1'] = { pos = 1519, section = 40 }, ['White Globe Banner'] = { pos = 50, section = 2 }, ['White Glow Stick'] = { pos = 2006, section = 33 }, ['White Gradient Banner'] = { pos = 3081, section = 2 }, ['White Inverted Chevron Banner'] = { pos = 3082, section = 2 }, ['White Jar'] = { pos = 1915, section = 37 }, ['White Lozenge Banner'] = { pos = 3083, section = 2 }, ['White Pale Banner'] = { pos = 3084, section = 2 }, ['White Pale Dexter Banner'] = { pos = 3085, section = 2 }, ['White Pale Sinister Banner'] = { pos = 3086, section = 2 }, ['White Paly Banner'] = { pos = 3087, section = 2 }, ['White Per Bend Banner'] = { pos = 3088, section = 2 }, ['White Per Bend Inverted Banner'] = { pos = 3089, section = 2 }, ['White Per Bend Sinister Banner'] = { pos = 3090, section = 2 }, ['White Per Bend Sinister Inverted Banner'] = { pos = 3091, section = 2 }, ['White Per Fess Banner'] = { pos = 3092, section = 2 }, ['White Per Fess Inverted Banner'] = { pos = 3093, section = 2 }, ['White Per Pale Banner'] = { pos = 3094, section = 2 }, ['White Per Pale Inverted Banner'] = { pos = 3095, section = 2 }, ['White Piglin Banner'] = { pos = 373, section = 2 }, ['White Roundel Banner'] = { pos = 3096, section = 2 }, ['White Saltire Banner'] = { pos = 3097, section = 2 }, ['White Shield'] = { pos = 2528, section = 1 }, ['White Shulker Box'] = { pos = 1617, section = 7 }, ['White Shulker Box Revision 1'] = { pos = 1430, section = 40 }, ['White Skull Charge Banner'] = { pos = 3098, section = 2 }, ['White Snout Banner'] = { pos = 373, section = 2 }, ['White Stained Glass'] = { pos = 791, section = 7 }, ['White Stained Glass Pane'] = { pos = 792, section = 7 }, ['White Stained Glass Pane BE'] = { pos = 2022, section = 7 }, ['White Terracotta'] = { pos = 790, section = 7 }, ['White Thing Banner'] = { pos = 3099, section = 2 }, ['White Tinted Glass'] = { pos = 1314, section = 40 }, ['White Tinted Glass Pane'] = { pos = 17, section = 40 }, ['White Tulip'] = { pos = 3449, section = 19 }, ['White Wood Planks'] = { pos = 258, section = 30 }, ['White Wool'] = { pos = 1537, section = 7 }, ['White Wool Revision 2'] = { pos = 793, section = 40 }, ['Wild Armor Trim'] = { pos = 828, section = 41 }, ['Wild Armor Trim Smithing Template'] = { pos = 828, section = 41 }, ['Witch Spawn Egg'] = { pos = 1166, section = 24 }, ['Wither Rose'] = { pos = 2388, section = 19 }, ['Wither Skeleton Skull'] = { pos = 968, section = 14 }, ['Wither Skeleton Skull BE'] = { pos = 219, section = 14 }, ['Wither Skeleton Spawn Egg'] = { pos = 1378, section = 24 }, ['Wither Spawn Egg'] = { pos = 698, section = 24 }, Wob = { pos = 1323, section = 32 }, ['Wolf Spawn Egg'] = { pos = 1167, section = 24 }, ['Wolf Spawn Egg Revision 1'] = { pos = 1399, section = 39 }, Wolfram = { pos = 1881, section = 34 }, ['Wood Heart'] = { pos = 122, section = 32 }, ['Wooden Axe'] = { pos = 3588, section = 25 }, ['Wooden Hoe'] = { pos = 3589, section = 25 }, ['Wooden Pickaxe'] = { pos = 3590, section = 25 }, ['Wooden Shovel'] = { pos = 3591, section = 25 }, ['Wooden Slab'] = { pos = 904, section = 12 }, ['Wooden Sword'] = { pos = 3642, section = 28 }, ['Woodland Explorer Map'] = { pos = 3592, section = 25 }, ['Woodland Explorer Map BE'] = { pos = 126, section = 25 }, ['Written Book'] = { pos = 3593, section = 25 }, Xenon = { pos = 1884, section = 34 }, ['Yellow Balloon'] = { pos = 1948, section = 33 }, ['Yellow Banner'] = { pos = 794, section = 7 }, ['Yellow Banner 15w14a'] = { pos = 488, section = 32 }, ['Yellow Base Banner'] = { pos = 3100, section = 2 }, ['Yellow Base Dexter Canton Banner'] = { pos = 3101, section = 2 }, ['Yellow Base Gradient Banner'] = { pos = 3102, section = 2 }, ['Yellow Base Indented Banner'] = { pos = 3103, section = 2 }, ['Yellow Base Sinister Canton Banner'] = { pos = 3104, section = 2 }, ['Yellow Beaker'] = { pos = 1890, section = 35 }, ['Yellow Bed'] = { pos = 3186, section = 7 }, ['Yellow Bed BE'] = { pos = 1560, section = 7 }, ['Yellow Bed LCE'] = { pos = 1560, section = 7 }, ['Yellow Bend Banner'] = { pos = 3105, section = 2 }, ['Yellow Bend Sinister Banner'] = { pos = 3106, section = 2 }, ['Yellow Bordure Banner'] = { pos = 3107, section = 2 }, ['Yellow Bordure Indented Banner'] = { pos = 3108, section = 2 }, ['Yellow Candle'] = { pos = 438, section = 7 }, ['Yellow Carpet'] = { pos = 1636, section = 7 }, ['Yellow Carpet Revision 1'] = { pos = 795, section = 40 }, ['Yellow Chevron Banner'] = { pos = 3109, section = 2 }, ['Yellow Chief Banner'] = { pos = 3110, section = 2 }, ['Yellow Chief Dexter Canton Banner'] = { pos = 3111, section = 2 }, ['Yellow Chief Indented Banner'] = { pos = 3112, section = 2 }, ['Yellow Chief Sinister Canton Banner'] = { pos = 3113, section = 2 }, ['Yellow Cloth'] = { pos = 243, section = 40 }, ['Yellow Concrete'] = { pos = 1520, section = 7 }, ['Yellow Concrete Powder'] = { pos = 1521, section = 7 }, ['Yellow Creeper Charge Banner'] = { pos = 3114, section = 2 }, ['Yellow Cross Banner'] = { pos = 3115, section = 2 }, ['Yellow Dye'] = { pos = 3170, section = 6 }, ['Yellow Fess Banner'] = { pos = 3116, section = 2 }, ['Yellow Field Masoned Banner'] = { pos = 3117, section = 2 }, ['Yellow Firework Star'] = { pos = 821, section = 9 }, ['Yellow Flask'] = { pos = 1914, section = 36 }, ['Yellow Flower Charge Banner'] = { pos = 3118, section = 2 }, ['Yellow Glazed Terracotta'] = { pos = 1522, section = 7 }, ['Yellow Globe Banner'] = { pos = 51, section = 2 }, ['Yellow Glow Stick'] = { pos = 2007, section = 33 }, ['Yellow Gradient Banner'] = { pos = 3119, section = 2 }, ['Yellow Inverted Chevron Banner'] = { pos = 3120, section = 2 }, ['Yellow Jar'] = { pos = 1924, section = 37 }, ['Yellow Key'] = { pos = 453, section = 32 }, ['Yellow Lozenge Banner'] = { pos = 3121, section = 2 }, ['Yellow Pale Banner'] = { pos = 3122, section = 2 }, ['Yellow Pale Dexter Banner'] = { pos = 3123, section = 2 }, ['Yellow Pale Sinister Banner'] = { pos = 3124, section = 2 }, ['Yellow Paly Banner'] = { pos = 3125, section = 2 }, ['Yellow Per Bend Banner'] = { pos = 3126, section = 2 }, ['Yellow Per Bend Inverted Banner'] = { pos = 3127, section = 2 }, ['Yellow Per Bend Sinister Banner'] = { pos = 3128, section = 2 }, ['Yellow Per Bend Sinister Inverted Banner'] = { pos = 3129, section = 2 }, ['Yellow Per Fess Banner'] = { pos = 3130, section = 2 }, ['Yellow Per Fess Inverted Banner'] = { pos = 3131, section = 2 }, ['Yellow Per Pale Banner'] = { pos = 3132, section = 2 }, ['Yellow Per Pale Inverted Banner'] = { pos = 3133, section = 2 }, ['Yellow Piglin Banner'] = { pos = 374, section = 2 }, ['Yellow Roundel Banner'] = { pos = 3134, section = 2 }, ['Yellow Saltire Banner'] = { pos = 3135, section = 2 }, ['Yellow Shield'] = { pos = 2529, section = 1 }, ['Yellow Shulker Box'] = { pos = 1618, section = 7 }, ['Yellow Shulker Box Revision 1'] = { pos = 1431, section = 40 }, ['Yellow Skull Charge Banner'] = { pos = 3136, section = 2 }, ['Yellow Snout Banner'] = { pos = 374, section = 2 }, ['Yellow Stained Glass'] = { pos = 797, section = 7 }, ['Yellow Stained Glass Pane'] = { pos = 798, section = 7 }, ['Yellow Stained Glass Pane BE'] = { pos = 2023, section = 7 }, ['Yellow Terracotta'] = { pos = 796, section = 7 }, ['Yellow Thing Banner'] = { pos = 3137, section = 2 }, ['Yellow Tinted Glass'] = { pos = 1315, section = 40 }, ['Yellow Tinted Glass Pane'] = { pos = 18, section = 40 }, ['Yellow Wood Planks'] = { pos = 259, section = 30 }, ['Yellow Wool'] = { pos = 1538, section = 7 }, ['Yellow Wool Revision 2'] = { pos = 799, section = 40 }, Ytterbium = { pos = 1885, section = 34 }, Yttrium = { pos = 1886, section = 34 }, Zinc = { pos = 1887, section = 34 }, Zirconium = { pos = 1888, section = 34 }, ['Zoglin Spawn Egg'] = { pos = 268, section = 24 }, ['Zombie Head'] = { pos = 969, section = 14 }, ['Zombie Head BE'] = { pos = 220, section = 14 }, ['Zombie Horse Spawn Egg'] = { pos = 1379, section = 24 }, ['Zombie Horse Spawn Egg Revision 1'] = { pos = 1591, section = 39 }, ['Zombie Pigman Spawn Egg'] = { pos = 1169, section = 24 }, ['Zombie Pigman Spawn Egg Revision 1'] = { pos = 1401, section = 39 }, ['Zombie Spawn Egg'] = { pos = 1168, section = 24 }, ['Zombie Spawn Egg Revision 1'] = { pos = 1400, section = 39 }, ['Zombie Villager Spawn Egg'] = { pos = 1349, section = 24 }, ['Zombified Piglin Spawn Egg'] = { pos = 1169, section = 24 }, }, } 459b910e0cd77ac4367b843098545ea610674811 Module:Inventory slot 828 11 173 21 2024-05-08T16:36:23Z Axxyyy 2 Scribunto text/plain local p = {} local i18n = { filename = 'Invicon $1', legacyFilename = 'Grid $1.png', modLink = 'Mods/$1/$2', moduleAliases = [[Module:Inventory slot/Aliases]], moduleInvIds = [[Module:InvSprite/IDs]], moduleModIds = 'Module:InvSprite/Mods/$1/IDs', moduleRandom = [[Module:Random]], moduleSprite = [[Module:Sprite]], -- List of special prefixes which should be handled by -- other modules (such as being moved outside links) prefixes = { 'Any', 'Matching', 'Damaged', any = 'Any', matching = 'Matching', damaged = 'Damaged', }, templateFileUrl = 'FileUrl', } p.i18n = i18n p.prefixes = i18n.prefixes local random = require( i18n.moduleRandom ).random local sprite = require( i18n.moduleSprite ).sprite local aliases = mw.loadData( i18n.moduleAliases ) -- local ids = mw.loadData( i18n.moduleInvIds ).ids local modIds = {} local pageName = mw.title.getCurrentTitle().text -- Performs a simple recursive clone of a table's values local function cloneTable( origTable ) local newTable = {} for k, v in pairs( origTable ) do if type( v ) == 'table' then v = cloneTable( v ) end newTable[k] = v end return newTable end --[[Merges a list, or inserts a string or table into a table --]] local function mergeList( parentTable, content ) local i = #parentTable + 1 if content[1] then -- Merge list into table for _, v in ipairs( content ) do parentTable[i] = v i = i + 1 end else -- Add strings or tables to table parentTable[i] = content end end -- Creates the HTML for an item local function makeItem( frame, i, args ) local item = mw.html.create( 'span' ):addClass( 'invslot-item' ) if args.imgclass then item:addClass( args.imgclass ) end if frame.name == '' then item:tag( 'br' ) return item end local category local title = frame.title or mw.text.trim( args.title or '' ) local mod = frame.mod local name = frame.name or '' local num = frame.num local description = frame.text local img, idData if mod then local modData = modIds[mod] if not modData and mw.title.new( i18n.moduleModIds:gsub( '%$1', mod ) ).exists then modData = mw.loadData( i18n.moduleModIds:gsub( '%$1', mod ) ) modIds[mod] = modData end if modData and modData[name] then idData = modData[name] else img = i18n.legacyFilename:gsub( '%$1', name .. ' (' .. mod .. ')' ) end elseif ids and ids[name] then idData = ids[name] elseif name:match( '\.gif$' ) or name:match( '\.png$' ) then img = i18n.filename:gsub( '%$1', name ) -- Remove file extension from name name = name:sub( 0, -5 ) else img = i18n.legacyFilename:gsub( '%$1', name ) end local link = args.link or '' if link == '' then if mod then link = i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name ) else link = name:gsub( '^' .. i18n.prefixes.damaged .. ' ', '' ) end elseif link:lower() == 'none' then link = nil end if link == pageName then link = nil end local formattedTitle local plainTitle if title == '' then plainTitle = name elseif title:lower() ~= 'none' then plainTitle = title:gsub( '\\\\', '&#92;' ):gsub( '\\&', '&#38;' ) local formatPattern = '&[0-9a-fk-or]' if plainTitle:match( formatPattern ) then formattedTitle = title plainTitle = plainTitle:gsub( formatPattern, '' ) end if plainTitle == '' then plainTitle = name else plainTitle = plainTitle:gsub( '&#92;', '\\' ):gsub( '&#38;', '&' ) end elseif link then if img then formattedTitle = '' else plainTitle = '' end end item:attr{ ['data-minetip-title'] = formattedTitle, ['data-minetip-text'] = description } mw.log(img) if img then -- & is re-escaped because mw.html treats attributes -- as plain text, but MediaWiki doesn't local escapedTitle = ( plainTitle or '' ):gsub( '&', '&#38;' ) item:addClass( 'invslot-item-image' ) :wikitext( '[[File:', img, '|32x32px|link=', link or '', '|', escapedTitle, ']]' ) else local image if mod then image = args.spritesheet or mod .. 'Sprite.png' end if link then item:wikitext( '[[', link, '|' ) end local image, spriteCat = sprite{ iddata = idData, title = plainTitle, image = image, settings = 'InvSprite' } item:node( image ) category = spriteCat end if num and num > 1 and num < 1000 then if img and link then item:wikitext( '[[', link, '|' ) end local number = item :tag( 'span' ) :addClass( 'invslot-stacksize' ) :attr{ title = plainTitle } :wikitext( num ) if numStyle then number:cssText( numStyle ) end if img and link then item:wikitext( ']]' ) end end if idData and link then item:wikitext( ']]' ) end item:wikitext( category ) mw.logObject(item) return item end -- Main entry point function p.slot( f ) local args = f.args or f if f == mw.getCurrentFrame() and args[1] == nil then args = f:getParent().args end if not args.parsed then args[1] = mw.text.trim( args[1] or '' ) end local modData = { aliases = args.modaliases or '', default = args.mod } if modData.aliases ~= '' then modData.aliases = mw.loadData( 'Module:' .. modData.aliases ) else modData.aliases = nil end if args.mod == '' then modData.default = nil end local frames if args.parsed then frames = args[1] elseif args[1] ~= '' then local randomise = args.class == 'invslot-large' and 'never' or nil frames = p.parseFrameText( args[1], randomise, false, modData ) end local animated = frames and #frames > 1 local imgClass = args.imgclass local numStyle = args.numstyle local body = mw.html.create( 'span' ):addClass( 'invslot' ):css{ ['vertical-align'] = args.align } if animated then body:addClass( 'animated' ) end if args.class then body:addClass( args.class ) end if args.style then body:cssText( args.style ) end if ( args.default or '' ) ~= '' then body:css( 'background-image', f:expandTemplate{ title = i18n.templateFileUrl, args = { args.default .. '.png' } } ) end --mw.logObject( frames ) if not frames then body:tag( 'br' ) return tostring( body ) end local activeFrame = frames.randomise == true and random( #frames ) or 1 for i, frame in ipairs( frames ) do local item -- Table is a list, must contain subframes if frame[1] then item = body:tag( 'span' ):addClass( 'animated-subframe' ) local subActiveFrame = frame.randomise and random( #frame ) or 1 for sI, sFrame in ipairs( frame ) do local sItem = makeItem( sFrame, sI, args ) item:node( sItem ) if sI == subActiveFrame then --Should be animated-active but JS isn't updated sItem:addClass( 'active' ) end end else item = makeItem( frame, i, args ) body:node( item ) end if i == activeFrame and animated then --Should be animated-active but JS isn't updated item:addClass( 'active' ) end end return tostring( body ) end --[[Parses the frame text into a table of frames and subframes, expanding aliases (and optionally retaining a reference), and deciding if the slot can be randomised --]] function p.parseFrameText( framesText, randomise, aliasReference, modData ) local frames = { randomise = randomise } local subframes = {} local subframe local expandedAliases local splitFrames = mw.text.split( mw.text.trim( framesText ), '%s*;%s*' ) for _, frameText in ipairs( splitFrames ) do frameText = frameText:gsub( '^%s*{%s*', function() subframe = true return '' end ) if subframe then frameText = frameText:gsub( '%s*}%s*$', function() subframe = 'last' return '' end ) end local frame = p.makeFrame( frameText, modData and modData.default ) local newFrame = frame if aliases or modData.aliases then local id = frame.name if frame.mod then id = frame.mod .. ':' .. id end local alias = modData and modData.aliases and modData.aliases[id] or aliases and aliases[id] if alias then newFrame = p.getAlias( alias, frame ) if aliasReference then local curFrame = #frames + 1 local aliasData = { frame = frame, length = #newFrame } if subframe then if not subframes.aliasReference then subframes.aliasReference = {} end subframes.aliasReference[#subframes + 1] = aliasData else if not expandedAliases then expandedAliases = {} end expandedAliases[curFrame] = aliasData end end end end if subframe then mergeList( subframes, newFrame ) -- Randomise starting frame for "Any *" aliases, as long as the alias is the only subframe if frames.randomise ~= 'never' and subframes.randomise == nil and frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then subframes.randomise = true else subframes.randomise = false end if frames.randomise ~= 'never' then frames.randomise = false end if subframe == 'last' then -- No point having a subframe containing a single frame, -- or the subframe being the only frame if #subframes == 1 or #splitFrames == i and #frames == 0 then mergeList( frames, subframes ) else table.insert( frames, subframes ) end subframes = {} subframe = nil end else -- Randomise starting frame for "Any *" aliases, as long as the alias is the only frame if frames.randomise == nil and frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then frames.randomise = true elseif frames.randomise ~= 'never' then frames.randomise = false end mergeList( frames, newFrame ) end end frames.aliasReference = expandedAliases return frames end --[[Returns a new table with the parts of the parent frame added to the alias --]] function p.getAlias( aliasFrames, parentFrame ) -- If alias is just a name, return the parent frame with the new name if type( aliasFrames ) == 'string' then local expandedFrame = mw.clone( parentFrame ) expandedFrame.name = aliasFrames return { expandedFrame } end -- Single frame alias, put in list if aliasFrames.name then aliasFrames = { aliasFrames } end local expandedFrames = {} for i, aliasFrame in ipairs( aliasFrames ) do local expandedFrame if type( aliasFrame ) == 'string' then expandedFrame = { name = aliasFrame } else expandedFrame = cloneTable( aliasFrame ) end expandedFrame.title = parentFrame.title or expandedFrame.title expandedFrame.mod = parentFrame.mod or expandedFrame.mod expandedFrame.num = parentFrame.num or expandedFrame.num expandedFrame.text = parentFrame.text or expandedFrame.text expandedFrames[i] = expandedFrame end return expandedFrames end function p.expandAlias( parentFrame, alias ) return p.getAlias( alias, parentFrame ) end function p.stringifyFrame( frame ) if not frame.name then return '' end return string.format( '[%s]%s:%s,%s[%s]', frame.title or '', frame.mod or 'Minecraft', frame.name, frame.num or '', frame.text or '' ) end function p.stringifyFrames( frames ) for i, frame in ipairs( frames ) do frames[i] = p.stringifyFrame( frame ) end return table.concat( frames, ';' ) end -- Splits up the frame text into its parts function p.makeFrame( frameText, mod ) -- Simple frame with no parts if not frameText:match( '[%[:,]' ) then return { mod = mod, name = mw.text.trim( frameText ), } end frameText = frameText:gsub( '%s*([%[%]:,;])%s*', '%1' ) local frame = {} frame.title = frameText:match( '^%[([^%]]+)%]' ) frame.mod = frameText:match( '([^:%]]+):' ) or mod local vanilla = { v = 1, vanilla = 1, mc = 1, minecraft = 1 } if frame.mod and vanilla[mw.ustring.lower( frame.mod )] or frame.mod == '' then frame.mod = nil end local nameStart = ( frameText:find( ':' ) or frameText:find( '%]' ) or 0 ) + 1 if nameStart - 1 == #frameText then nameStart = 1 end frame.name = frameText:sub( nameStart, ( frameText:find( '[,%[]', nameStart ) or 0 ) - 1 ) frame.num = math.floor( frameText:match( ',(%d+)' ) or 0 ) if frame.num == 0 then frame.num = nil end frame.text = frameText:match( '%[([^%]]+)%]$' ) return frame end function p.getParts( frameText, mod ) return p.makeFrame( frameText, mod ) end return p 7992026e7fd17eb049df5bd75c2b4339ea5feb0c File:Grid Clay.png 6 110 174 2024-05-08T16:37:33Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Grid Sand.png 6 111 175 2024-05-08T16:39:29Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Grid Ceramic.png 6 93 176 150 2024-05-08T16:41:27Z Axxyyy 2 Axxyyy uploaded a new version of [[File:Grid Ceramic.png]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Grid Clay.png 6 110 177 174 2024-05-08T16:42:00Z Axxyyy 2 Axxyyy uploaded a new version of [[File:Grid Clay.png]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:GridNumbersCSS.png 6 112 178 2024-05-08T19:33:32Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Widget:Stylesheet 0 113 179 2024-05-08T19:38:14Z Axxyyy 2 Created page with "<link rel="stylesheet" href="//minecraft.gamepedia.com/index.php?action=raw&ctype=text/css&title=MediaWiki:.css">" wikitext text/x-wiki <link rel="stylesheet" href="//minecraft.gamepedia.com/index.php?action=raw&ctype=text/css&title=MediaWiki:.css"> 6a564d9e609d91a91c7857ce0ab015fc1fbcb6bb MediaWiki:Common.css 8 114 180 2024-05-08T20:39:04Z Axxyyy 2 Created page with ".scribunto-error { display: none; } /** Template stylings **/ /* [[Template:Grid]]: [[File:Grid Unknown.png]] */ .grid { position: relative; display: inline-block; font-size: 16px; text-align: center !important; background-color: #8B8B8B; border: 2px solid #373737; border-right-color: #FFF; border-bottom-color: #FFF; width: 2em; height: 2em; vertical-align: bottom; } .grid.output { font-size: 24px; } .grid:before, .grid:after { content: ""; position: abs..." css text/css .scribunto-error { display: none; } /** Template stylings **/ /* [[Template:Grid]]: [[File:Grid Unknown.png]] */ .grid { position: relative; display: inline-block; font-size: 16px; text-align: center !important; background-color: #8B8B8B; border: 2px solid #373737; border-right-color: #FFF; border-bottom-color: #FFF; width: 2em; height: 2em; vertical-align: bottom; } .grid.output { font-size: 24px; } .grid:before, .grid:after { content: ""; position: absolute; background-color: #8B8B8B; height: 2px; width: 2px; pointer-events: none; } .grid:before { bottom: -2px; left: -2px; } .grid:after { top: -2px; right: -2px; } .grid img { padding: 2px; } .grid > .item, .grid > .default-item { position: absolute; margin: -18px 0 0 -18px; top: 1em; left: 1em; } .grid > .item > a.new { background: url(https://hydra-media.cursecdn.com/minecraft.gamepedia.com/3/35/Grid_Unknown.png) no-repeat 2px; display: block; width: 32px; height: 32px; padding: 2px; text-indent: -9999px; overflow: hidden; } .grid > .item > .number { position: absolute; right: 0; bottom: 0; font-family: Minecraft; font-size: 16px; font-weight: normal; line-height: 16px; color: #FFF; pointer-events: none; text-shadow: 2px 2px 0 #3F3F3F; filter: dropshadow(color=#3F3F3F, offx=2, offy=2); z-index: 6; } .grid > .item > .number > a { color: #FFF; text-decoration: none; } .grid > .item > .number > .selflink { font-weight: normal; } .grid > .item > a.new + .number { display: none; } /* Plain grid with no border or background */ .grid.plain { background-color: transparent; border: 0; } .grid.plain:before, .grid.plain:after { content: none; } /* Generic grid layout styling */ .grid-Crafting_Table, .grid-Furnace, .grid-Brewing_Stand table, .grid-generic { background: #C6C6C6; border: outset 2px #999; padding: 6px; text-align: left !important; } .grid-Crafting_Table td, .grid-Furnace td, .grid-Brewing_Stand td, .grid-generic td { border: none; padding: 0; } /* [[Template:Grid/Crafting Table]] */ .grid-Crafting_Table .arrow, .grid-Crafting_Table .shapeless { text-align: center; vertical-align: bottom; } .grid-Crafting_Table .arrow { width: 40px; padding-bottom: 5px; } .grid-Crafting_Table .shapeless span { cursor: help; } /* [[Template:Grid/Furnace]] */ .grid-Furnace { padding-left: 24px; padding-right: 24px; } .grid-Furnace .arrow, .grid-Furnace .output { text-align: center; vertical-align: middle; } .grid-Furnace .arrow { padding-right: 18px !important; padding-left: 14px !important; } /* [[Template:Grid/Brewing Stand]] */ .grid-Brewing_Stand { position: relative; width: 144px; } .grid-Brewing_Stand .bubbles { text-align: right; } .grid-Brewing_Stand .input { padding: 3px 0 !important; vertical-align: top; } .grid-Brewing_Stand .output1 { padding: 4px 10px 14px 0 !important; } .grid-Brewing_Stand .output2 { padding-top: 18px !important; } .grid-Brewing_Stand .output3 { padding: 4px 0 14px 10px !important; } .grid-Brewing_Stand .paths { position: absolute; bottom: 42px; left: 42px; z-index: 5; } /* [[Template:Grid/Hotbar]] */ .grid-Hotbar { display: inline-block; position: relative; border: 0; padding: 0; background-color: transparent; } .grid-Hotbar > .selector { position: absolute; top: -2px; margin-left: -2px; } .grid-Hotbar > .slots { position: absolute; top: 0; left: 0; margin: 2px; } .grid-Hotbar .grid { margin: 4px; } /* [[Template:Infobox common]] */ .infobox { width: 300px; border: 1px solid #aaa; background-color: #f9f9f9; color: #000; margin: .5em 0 .5em 1em; padding: .2em; float: right; clear: right; text-align: left; font-size: 88%; line-height: 1.5em; } .notaninfobox { clear: right; margin: 3px 0px 3px 3px; width: 300px; font-size: 90%; background: #FFF; float: right; border: 1px solid #CCC; padding: 2px; } .infobox-title { font-weight: bold; text-align: center; font-size: 120%; } .infobox-imagearea { text-align: center; padding: 4px; } .notaninfobox table { width: 100%; } .notaninfobox p { margin: 0; } .notaninfobox audio { width: 184px; } .notaninfobox dl:last-child { margin-bottom: 0.2em; } .infobox-footer { text-align: center; } /* Merge adjacent dls in the infobox (since they're usually supposed to be one, but the wiki screws up sometimes) */ .notaninfobox dl + dl { margin-top: -0.4em; } /* [[Template:Infobox row]] */ .infobox-row { white-space: nowrap; font-weight: bold; } /* [[Template:Navbox]] */ .navbox { background: #FFF; border: 1px solid #CCC; margin: 1em auto 0; clear: both; width: 100%; } .navbox table { background: #FFF; margin-left: -4px; margin-right: -2px; } .navbox table:first-child { margin-top: -2px; } .navbox table:last-child { margin-bottom: -2px; } .navbox-top { white-space: nowrap; background-color: #CCC; padding: 0 3px; } .navbox-navbar, .navbox-navbar-mini { float: left; font-size: 80%; } .navbox-title { padding: 0 10px; font-size: 110%; } .navbox-group { background-color: #EEE; padding: 0 10px; white-space: nowrap; text-align: right; } .navbox-list { width: 100%; padding: 0 0 0 2px; } /* [[Template:LoadBox]] with navbox */ .loadbox-navbox { padding: 2px !important; margin: 1em 0 0 !important; clear: both; } .loadbox-navbox > p { background-color: #CCC; text-align: center; margin: 0; padding: 0 3px; } .loadbox-navbox > p > b { font-size: 110%; } .loadbox-navbox .navbox { margin: 0 -2px -2px; border: 0; } .loadbox-navbox .navbox > tbody > tr:first-child { display: none; } /* [[Template:History2]] */ /*.history2 td > pre, .history2 td > ol { display: none; } .history2 ul { margin-top: 0; } .history2 .toggleHistDetails { float: right; text-align: right; width: 150px; } .history2 > tbody > tr:first-child > th { padding-left: 152px; }*/ /* [[Template:Sprite]] */ .sprite { display: inline-block; position: relative; overflow: hidden; vertical-align: middle; height: 16px; width: 16px; } .sprite > span { position: absolute; height: 256px; width: 256px; } /* [[Template:Sprite2]] */ .sprite2 { display: inline-block; vertical-align: text-top; height: 16px; width: 16px; } /* [[Template:Sprite/Preview]] */ .sprite-preview:hover div { opacity: 0.7 !important; } /* [[Template:Schematic]] */ .schematic img { image-rendering: crisp-edges; image-rendering: -moz-crisp-edges; image-rendering: -o-crisp-edges; image-rendering: -webkit-optimize-contrast; -ms-interpolation-mode: nearest-neighbor; } table.schematic { background-color: white; border-collapse: collapse; line-height: 0; } table.schematic td, span.schematic { border: 1px solid #AAA; padding: 0; } table.schematic span, span.schematic { display: inline-block; overflow: hidden; position: relative; } table.schematic span span, span.schematic span { color: black; font-weight: bold; left: 0; line-height: 1.5em; position: absolute; text-align: center; text-shadow: 0 0 2px #FFF; top: 0; } /** Misc stuff **/ /* Prevent page jump from the toolbar loading, doesn't affect people with the toolbar disabled */ #toolbar { height: 22px; } /* Remove the header from the main page */ body.page-Minecraft_Wiki.action-view h1.firstHeading, body.page-Minecraft_Wiki.action-view #contentSub { display: none; } /* Fix floating bodyContent getting caught on something, and displaying too low */ #bodyWrapper { display: inline-block; width: 100%; } /* Remove sidead from main page editcopy since it breaks the page and isn't on the real main page */ body.page-Minecraft_Wiki_editcopy .atfmrec { display: none; } /* Collapsible Tables ([[MediaWiki:Common.js]]) */ table.collapsed tr.collapsible { display: none; } .collapsible-button { float: right; font-weight: normal; margin-left: 0.8em; } .collapsible.collapse-button-left > tr > th .collapsible-button, .collapsible.collapse-button-left > * > tr > th .collapsible-button { float: left; margin-right: 0.8em; margin-left: 0; } .collapsible.collapse-button-none > tr > th .collapsible-button, .collapsible.collapse-button-none > * > tr > th .collapsible-button { float: none; } /* Alternating cell background, primarily used with [[Template:Infobox row]] */ .alternatecells:nth-child(odd) { background-color: #F9F9F9; } /* Alternating table rows */ .alternaterows tr:nth-child(even) { background-color: #F9F9F9; } /* The blue header used throughout the wiki */ .mcwiki-header { color: #b94a48 !important; font-weight: bold; margin: 3px; text-align: center; font-size: 120%; padding: 8px 35px 8px 14px; margin-bottom: 20px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); background-color: #fcf8e3; border: 1px solid #fbeed5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; background-color: #f2dede; border-color: #eed3d7; } /* Scale file page image to the width of the page */ #file img { max-width: 100%; height: auto; } /* Remove margin from file page table */ #mw-imagepage-section-filehistory .filehistory { margin-right: 0; } /* Highlight clicked reference in blue to help navigation */ ol.references li:target, sup.reference:target, span.citation:target { background-color: #C1DAF2; } /* Style the sitenotice and fix up its awful spacing (why is it even a table!?) */ #siteNotice #localNotice, .page-MediaWiki_Sitenotice .mw-content-ltr > div { background-color: #FFFFFF; border: 1px solid #D3D3D3; margin-bottom: 12px; text-align: center; } #siteNotice #mw-dismissable-notice #localNotice { /* Note to other languages: Change this to the same width as the "dismiss" button in your language, this makes the sitenotice centred better */ margin-left: 55px; } #siteNotice td:first-child { width: 100%; } #localNotice div p { padding: 0.4em 0 0.5em; margin: 0; } /* Minecraft font */ @font-face { font-family: Minecraft; src: url("https://hydra-media.cursecdn.com/hydra/fonts/minecraft.eot?#iefix"), url("https://hydra-media.cursecdn.com/hydra/fonts/minecraft.woff") format('woff'), url("https://hydra-media.cursecdn.com/hydra/fonts/minecraft.ttf") format('truetype'); } /* Pre-style sidebar portlets before JS loads, so sidebar is less jumpy (reset in [[MediaWiki:Noscript.css]] when JS is off) [[File:Panel-divider.png]] */ div#mw-panel div.portal { margin: -11px 9px 10px 11px; padding: 0.25em 0; background-image: url(https://hydra-media.cursecdn.com/minecraft.gamepedia.com/b/bf/Panel-divider.png); background-position: left top; background-repeat: no-repeat; } div#mw-panel div.portal div.body { background-image: none; padding: 0; margin: 0 0 0 1.25em; } div#mw-panel div.portal h5 { padding: 4px 0 3px 1.5em; margin-bottom: 0; } div#mw-panel div.portal div.body ul li { padding: 0.25em 0; } #mw-panel #p-Minecraft_Wiki { background-image: none; margin-top: 0; } #p-Minecraft_Wiki h5 { display: none; } #mw-panel #p-Minecraft_Wiki div.body { margin-left: 0.5em; } #p-Useful_pages div.body, #p-tb div.body { display: none; } /* Allow parts of toc to be hidden */ /* Section levels */ .toc-hidelevel2 .toclevel-1 ul, .toc-hidelevel3 .toclevel-2 ul, .toc-hidelevel4 .toclevel-2 ul, /* Numbers */ .toc-nonumbers .tocnumber { display: none; } /* Pre-collapse collapsed tables, so there is no page jump when JS kicks in */ .collapsible.collapsed > tr, .collapsible.collapsed > tbody > tr { display: none; } .collapsible.collapsed > tr:first-child, .collapsible.collapsed > tbody > tr:first-child { display: table-row; } .collapsible.collapsed > thead + tbody > tr:first-child { display: none; } /* Improve ASIRRA styling */ #asirra_InstructionsTextId { display: none; } #AsirraDiv { margin-bottom: 10px; } /* Turn a list into a tree view style (See [[.minecraft]]) */ .treeview { margin-top: 0.3em; } .treeview ul, .treeview li { margin: 0; padding: 0; list-style-type: none; list-style-image: none; } .treeview li { display: table; } .treeview li li { position: relative; padding-left: 13px; margin-left: 7px; border-left: 1px solid #636363; } .treeview li li:before { content: ""; position: absolute; top: 0; left: 0; width: 11px; height: 11px; border-bottom: 1px solid #636363; } .treeview li li.first:before { border-color: #636363; border-style: solid; border-width: 1px 0 0 1px; height: 100%; margin-top: 11px; width: 10px; } .treeview li li.first, .treeview li li:last-child { border: 0; padding-left: 14px; } .treeview li li:last-child:before { border-left: 1px solid #636363; width: 10px; } /* Simulate link styling for JS only links */ .jslink { color: #0645AD; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; } .jslink:hover { text-decoration: underline; cursor: pointer; } .jslink:active { color: #FAA700; } /* Improve styling of sub-categories */ #mw-subcategories ul { list-style-type: none; margin-left: 10px; } /* Use vector style arrows for enhanced rc instead of those ones from like 2003 */ .mw-enhancedchanges-arrow.mw-collapsible-toggle-expanded { background-image: url(/extensions/Vector/modules/images/open.svg); } .mw-enhancedchanges-arrow.mw-collapsible-toggle-collapsed { background-image: url(/extensions/Vector/modules/images/closed-ltr.svg); } /* Horizontal list */ .hlist ul { display: inline; margin: 0; } .hlist li { display: inline-block; margin: 0; white-space: nowrap; } .hlist li:not(:last-child) { padding-right: 0.313em; } .hlist li:not(:last-child):after { content: ""; display: inline-block; position: relative; left: 0.313em; bottom: 0.234em; background-color: #000; height: 3px; width: 3px; } .hlist li > ul li:first-child:before { content: "("; } .hlist li > ul li:last-child:after { content: ")"; margin-right: -0.313em; } .hlist li li li { font-size: x-small; } /* Generic styling for animation class */ .animated > *:not(.active):not(.skip), .paused > *:not(.active):not(.skip) { display: none; } /* Generic nowrap class */ .nowrap { white-space: nowrap; } /* Hide noscript only elements */ .noscript { display: none; } /* Cite text needs to be a block element, but should display inline */ .references > li { white-space: nowrap; } div.cite-reference-text { display: inline; vertical-align: top; white-space: normal; } /* Add [[File:Mojang logo.svg]] to known MC dev userlinks: [[File:Mojang logo.svg]] */ .mw-userlink[title="User:Jeb"], .mw-userlink[title="User:Dinnerbone"], .mw-userlink[title="User:EvilSeph"], .mw-userlink[title="User:MarcWatson"], .mw-userlink[title="User:Tahg"], .mw-userlink[title="User:MrTJP"] { padding-left: 17px; background: url(https://hydra-media.cursecdn.com/minecraft.gamepedia.com/thumb/a/ad/Mojang_logo.svg/14px-Mojang_logo.svg.png) no-repeat left center; } /* Mark internal links as plain */ #content a.external[href^="https://minecraft.gamepedia.com"] { background: none; padding-right: 0; } /* Make tabs the correct size */ * { -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; } /* Remove bullets/numbers from a list */ .list-style-none ul, .list-style-none ol { list-style: none; margin-left: 0; } /* Classes corresponding to Minecraft formatting codes */ .format-0 { color: #000; text-shadow: 0.125em 0.125em 0 #000; } .format-1 { color: #00A; text-shadow: 0.125em 0.125em 0 #00002A; } .format-2 { color: #0A0; text-shadow: 0.125em 0.125em 0 #002A00; } .format-3 { color: #0AA; text-shadow: 0.125em 0.125em 0 #002A2A; } .format-4 { color: #A00; text-shadow: 0.125em 0.125em 0 #2A0000; } .format-5 { color: #A0A; text-shadow: 0.125em 0.125em 0 #A200A2; } .format-6 { color: #FA0; text-shadow: 0.125em 0.125em 0 #2A2A00; } .format-7 { color: #AAA; text-shadow: 0.125em 0.125em 0 #2A2A2A; } .format-8 { color: #555; text-shadow: 0.125em 0.125em 0 #151515; } .format-9 { color: #55F; text-shadow: 0.125em 0.125em 0 #15153F; } .format-a { color: #5F5; text-shadow: 0.125em 0.125em 0 #153F15; } .format-b { color: #5FF; text-shadow: 0.125em 0.125em 0 #153F3F; } .format-c { color: #F55; text-shadow: 0.125em 0.125em 0 #3F1515; } .format-d { color: #F5F; text-shadow: 0.125em 0.125em 0 #3F153F; } .format-e { color: #FF5; text-shadow: 0.125em 0.125em 0 #3F3F15; } .format-l { font-weight: bold; letter-spacing: 0.125em; } .format-m { text-decoration: line-through; } .format-n { text-decoration: underline; } .format-o { font-style: italic; } /* Styling for minecraft style tooltip */ #minetip-tooltip { position: fixed; background-color: rgba(16, 0, 16, 0.94); border-top: 0.125em solid rgba(80, 0, 255, 0.31); border-bottom: 0.125em solid rgba(40, 0, 127, 0.31); color: #FFF; padding: 0.125em 0.25em; font-family: Minecraft; font-size: 16px; white-space: nowrap; pointer-events: none; line-height: 1.25em; text-shadow: 0.125em 0.125em 0 #3F3F3F; margin: 0.25em 0.375em; z-index: 100; } #minetip-tooltip:before { content: ""; position: absolute; top: -0.25em; right: -0.125em; bottom: -0.25em; left: -0.125em; border: 0.125em solid rgba(16, 0, 16, 0.94); } #minetip-tooltip:after { content: ""; position: absolute; top: -0.125em; right: -0.25em; bottom: -0.125em; left: -0.25em; background-image: -webkit-linear-gradient(rgba(80, 0, 255, 0.31), rgba(40, 0, 127, 0.31)), -webkit-linear-gradient(rgba(80, 0, 255, 0.31), rgba(40, 0, 127, 0.31)); background-image: linear-gradient(rgba(80, 0, 255, 0.31), rgba(40, 0, 127, 0.31)), linear-gradient(rgba(80, 0, 255, 0.31), rgba(40, 0, 127, 0.31)); background-size: 0.125em 100%; background-repeat: no-repeat; background-position: left, right; border: solid rgba(16, 0, 16, 0.94); border-width: 0 0.125em; } #minetip-tooltip > .description { display: block; margin-top: 0.25em; } /* Hide step-by-step publishing as it's broken */ .wikiEditor-ui-buttons { display: none !important; } /* Fix wikiEditor spacing */ #upload_container { margin-top: -1px; } #upload_div { margin: 0; width: auto; border-width: 1px 0; box-shadow: none; } .wikiEditor-ui-top { border: 0 !important; } .wikiEditor-ui-toolbar { border-bottom: 1px solid silver; } /* Fix social icons and promos in portlets */ #mw-panel #p-sitePromos, #mw-panel #p-socialProfiles { margin: -11px 9px 10px 11px !important; } #mw-panel #p-sitePromos .body, #mw-panel #p-socialProfiles .body { margin-left: 0 !important; padding: 4px 0; } #mw-panel .socialSidebar { text-align: left; } #mw-panel .socialLink { margin: 0 4px 0 0; } /* Move the portlets up */ #p-logo { margin-bottom: 0; } /* Fix enhanced RC spacing */ .mw-enhancedchanges-arrow-space { vertical-align: top; } /* Remove on MW1.22: Make notifications fixed, so they're always visible */ #mw-notification-area { position: fixed; top: 2.5em; } .toc { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); display: inline-block; } .toc ul { list-style-type: none; } /************/ .invslot { position: relative; display: inline-block; background: #8B8B8B no-repeat center center / 32px 32px; border: 2px solid; border-color: #373737 #FFF #FFF #373737; width: 32px; height: 32px; font-size: 16px; line-height: 1; text-align: left; vertical-align: bottom } .invslot:before, .invslot:after { content: ""; position: absolute; background-color: #8B8B8B; height: 2px; width: 2px; pointer-events: none } .invslot:before { bottom: -2px; left: -2px } .invslot:after { top: -2px; right: -2px } .invslot-large { padding: 8px } .invslot-item, .invslot-item > a:first-child { position: relative; display: block; margin: -2px; padding: 2px } .invslot-item-image > a.new:first-child { background: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/4/44/InvSprite.png) no-repeat content-box; width: 32px; height: 32px; text-indent: -9999px; overflow: hidden } .invslot-stacksize { position: absolute; right: 0; bottom: 0; font-family: Minecraft, sans-serif !important; font-weight: normal !important; color: #FFF !important; text-shadow: 2px 2px 0 #3F3F3F; filter: dropshadow(color=#3F3F3F, offx=2, offy=2); z-index: 2 } .invslot-plain { background-color: transparent; border: 0 } .invslot-plain:before, .invslot-plain:after { content: none } .invslot-plain > .invslot-item, .invslot-plain > .invslot-item > a:first-child { margin: 0; padding: 0 } .mcui { display: inline-block; position: relative; background-color: #C6C6C6; border: 2px solid; border-color: #DBDBDB #5B5B5B #5B5B5B #DBDBDB; padding: 6px; text-align: left; white-space: nowrap; vertical-align: bottom } .mcui-Crafting_Table > *, .mcui-Furnace > * { display: inline-block; vertical-align: top } .mcui-Crafting_Table .mcui-row { display: block } .mcui-Crafting_Table > .mcui-arrow { background: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/8/86/Grid_layout_Arrow_%28small%29.png) no-repeat; width: 32px; height: 26px; margin: 40px 4px 0 } .mcui-Crafting_Table > .mcui-output { margin-top: 28px } .mcui-Crafting_Table > .mcui-icons { position: absolute; top: 6px; right: 6px } .mcui-Crafting_Table .mcui-shapeless, .mcui-Crafting_Table .mcui-fixed { display: inline-block; background-repeat: no-repeat; width: 19px; height: 15px; cursor: help } .mcui-Crafting_Table .mcui-shapeless { background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/a/a9/Grid_layout_Shapeless.png) } .mcui-Crafting_Table .mcui-fixed { background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/b/b8/Grid_layout_Fixed.png) } .mcui-Furnace .mcui-fuel { display: block; background: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/d/d8/Grid_layout_Fire.png) no-repeat; width: 36px; height: 36px } .mcui-Furnace .mcui-fuel.mcui-inactive { background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/a/ab/Grid_layout_Fire_%28in-active%29.png) } .mcui-Furnace > .mcui-arrow { background: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/8/8e/Grid_layout_Furnace_Progress.png) no-repeat; width: 44px; height: 32px; margin: 36px 18px 0 14px } .mcui-Furnace > .mcui-arrow.mcui-inactive { background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/d/dc/Grid_layout_Furnace_Progress_%28in-active%29.png) } .mcui-Furnace > .mcui-output { margin-top: 28px } .mcui-Brewing_Stand > * { display: block } .mcui-Brewing_Stand .invslot { vertical-align: top } .mcui-Brewing_Stand > .mcui-input { text-align: center } .mcui-Brewing_Stand > .mcui-input > .invslot { margin-top: 3px } .mcui-Brewing_Stand .mcui-bubbling, .mcui-Brewing_Stand .mcui-arrow { display: inline-block; background-repeat: no-repeat; width: 24px; height: 57px } .mcui-Brewing_Stand .mcui-bubbling { background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/6/65/Grid_layout_Brewing_Bubbles.gif) } .mcui-Brewing_Stand > .mcui-input.mcui-inactive > .mcui-bubbling { background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/d/db/Grid_layout_Brewing_Bubbles_%28In-active%29.png) } .mcui-Brewing_Stand .mcui-arrow { background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/4/4b/Grid_layout_Brewing_Arrow.png) } .mcui-Brewing_Stand > .mcui-input.mcui-inactive > .mcui-arrow { background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/5/59/Grid_layout_Brewing_Arrow_%28In-active%29.png) } .mcui-Brewing_Stand > .mcui-paths { position: relative; background: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/8/82/Grid_layout_Brewing_Paths.png) no-repeat; width: 60px; height: 40px; margin: -20px auto -16px; z-index: 1 } .mcui-Brewing_Stand .mcui-output .invslot { background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/5/59/Grid_layout_Brewing_Empty.png) } .mcui-Brewing_Stand .mcui-output2 { margin: 14px 10px 0 } .mcui-Hotbar { display: inline-block; position: relative; border: 0; padding: 0; background-color: transparent } .mcui-Hotbar > .mcui-selector { position: absolute; top: -2px; margin-left: -2px } .mcui-Hotbar > .mcui-slots { position: absolute; top: 0; left: 0; margin: 2px } .mcui-Hotbar .invslot { margin: 4px } 687b5f0c67b6872db6d1a0231fa8a08cb72c09cf Module:Crafting usage 828 115 181 2024-05-08T20:44:58Z Axxyyy 2 Created page with "local p = {} local i18n = { emptyCategory = 'Empty crafting usage', moduleCrafting = [[Module:Crafting]], moduleSlot = [[Module:Inventory slot]], queryCategory = 'Recipe using $1', templateCrafting = 'Crafting', } p.i18n = i18n local slot = require( i18n.moduleSlot ) local crafting = require( i18n.moduleCrafting ) local argList = { 'ignoreusage', 'upcoming', 'name', 'ingredients', 'arggroups', 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3',..." Scribunto text/plain local p = {} local i18n = { emptyCategory = 'Empty crafting usage', moduleCrafting = [[Module:Crafting]], moduleSlot = [[Module:Inventory slot]], queryCategory = 'Recipe using $1', templateCrafting = 'Crafting', } p.i18n = i18n local slot = require( i18n.moduleSlot ) local crafting = require( i18n.moduleCrafting ) local argList = { 'ignoreusage', 'upcoming', 'name', 'ingredients', 'arggroups', 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3', 'Output', 'description', 'fixed', 'notfixed', 'A1title', 'A1link', 'B1title', 'B1link', 'C1title', 'C1link', 'A2title', 'A2link', 'B2title', 'B2link', 'C2title', 'C2link', 'A3title', 'A3link', 'B3title', 'B3link', 'C3title', 'C3link', 'Otitle', 'Olink', } local prefixes = slot.i18n.prefixes --[[Escapes the parenthesis in ingredient names, and returns the correct pattern depending on the match type --]] local function createIngredientPatterns( ingredients, matchTypes ) local patterns = {} for i, ingredient in ipairs( ingredients ) do local escaped = ingredient:gsub( '([()])', '%%%1' ) if not matchTypes then patterns[i] = '^' .. escaped .. '$' else local matchType = matchTypes[i] or matchTypes if matchType == 'start' then patterns[i] = '^' .. escaped elseif matchType == 'end' then patterns[i] = escaped .. '$' else patterns[i] = escaped end end end return patterns end --[[Extracts the anonymous pipe-delimited arguments from the DPL query into a table with the corresponding keys, skipping templates with `ignoreusage` set, and skipping duplicate templates --]] local extractArgs do local seen = {} extractArgs = function( template ) -- Check for duplicate template or `ignoreusage` arg if seen[template] or not template:find( '^\n|' ) then return end seen[template] = true local tArgs = {} local i = 1 for arg in mw.text.gsplit( template, '\n|' ) do if arg ~= '' then tArgs[argList[i]] = arg end i = i + 1 end tArgs.nocat = '1' return tArgs end end --[[Loops through the crafting args and parses them, with alias reference data Identical slots reuse the same table, to allow them to be compared like strings --]] local function parseCraftingArgs( cArgs ) local parsedFrameText = {} local parsedCArgs = {} for arg, frameText in pairs( cArgs ) do if frameText then local randomise = arg == 'Output' and 'never' or nil local frames = not randomise and parsedFrameText[frameText] if not frames then frames = slot.parseFrameText( frameText, randomise, true ) parsedFrameText[frameText] = frames end parsedCArgs[arg] = frames end end return parsedCArgs end -- Loops through the wanted ingredients, and checks if the name contains it local function containsIngredients( name, ingredientPatterns ) for _, ingredient in pairs( ingredientPatterns ) do if name:find( ingredient ) then return true end end return false end --[[Loops through the crafting ingredients and find which parameters and frames contain the wanted ingredients Returns a table if any matches are found, the table contains tables of required frame numbers, or true if all of them are required --]] local function findRequiredFrameNums( parsedCArgs, ingredientPatterns ) local requiredFrameNums = {} local hasRequiredFrames for arg, frames in pairs( parsedCArgs ) do if arg ~= 'Output' then local requiredFrames = {} local count = 0 for i, frame in ipairs( frames ) do if containsIngredients( frame.name or frame[1].name, ingredientPatterns ) then requiredFrames[i] = true count = count + 1 end end if count > 0 then if count == #frames then return true end hasRequiredFrames = true requiredFrames.count = count requiredFrameNums[arg] = requiredFrames end end end return hasRequiredFrames and requiredFrameNums end --[[Generates the argument groups, either using the template's specified groups, or automatically based on the number of frames in each slot --]] local function generateArgGroups( predefinedArgGroups, parsedCArgs ) local argGroups = {} if predefinedArgGroups or '' ~= '' then local i = 1 for argGroup in mw.text.gsplit( predefinedArgGroups, '%s*;%s*' ) do local groupData = { args = {} } for arg in mw.text.gsplit( argGroup, '%s*,%s*' ) do arg = tonumber( arg ) or arg if not groupData.count then groupData.count = #parsedCArgs[arg] end groupData.args[arg] = true end argGroups[i] = groupData i = i + 1 end else for arg, frames in pairs( parsedCArgs ) do local framesLen = #frames if framesLen > 0 then local groupName = framesLen local alias = frames.aliasReference and frames.aliasReference[1] if alias and alias.length == framesLen and alias.frame.name:find( '^' .. prefixes.any .. ' ' ) then groupName = alias.frame.name end local groupData = argGroups[groupName] if not groupData then groupData = { args = {}, count = framesLen } argGroups[groupName] = groupData end groupData.args[arg] = true end end end return argGroups end --[[Adds together the required frames from each slot in this group to get the total amount of frames which are relevant Returns a table with the relevant frame numbers, if any are relevant --]] local function findRelevantFrameNums( requiredFrameNumData, group ) local relevantFrameNums = {} local hasRelevantFrames for arg in pairs( group ) do local requiredFrameNums = requiredFrameNumData[arg] if requiredFrameNums and arg ~= 'Output' then for frameNum in pairs( requiredFrameNums ) do -- Have to use pairs as it contains a non-sequential set of numbers -- so we have to skip over the extra data in the table if frameNum ~= 'count' then hasRelevantFrames = true relevantFrameNums[frameNum] = true end end relevantFrameNums.count = math.max( requiredFrameNums.count or 0, relevantFrameNums.count or 0 ) end end return hasRelevantFrames and relevantFrameNums end --[[Loops through the relevant frame numbers and extracts them into a new table, taking care of moving any alias references and cleaning up any unnecessary subframes --]] function p.extractRelevantFrames( relevantFrameNums, frames ) local relevantFrames = { randomise = frames.randomise } local newFrameNum = 1 for frameNum, frame in ipairs( frames ) do local relevantFrame = relevantFrameNums == true or relevantFrameNums[frameNum] if relevantFrame then if not frame[1] then local alias = frames.aliasReference and frames.aliasReference[frameNum] local moveAlias = true if alias and relevantFrameNums ~= true then for i = frameNum, alias.length do if not relevantFrameNums[i] then moveAlias = false break end end end if alias and moveAlias then if not relevantFrames.aliasReference then relevantFrames.aliasReference = {} end relevantFrames.aliasReference[newFrameNum] = alias end end relevantFrames[newFrameNum] = frame newFrameNum = newFrameNum + 1 end end -- Move frames in subframe to main frames, if the subframe -- is the only frame if not relevantFrames[2] and relevantFrames[1][1] then relevantFrames = relevantFrames[1] end return relevantFrames end --[[Works out what data is relevant to the requested ingredients If the template contains any of the ingredients, returns it with any necessary modifications, and with the crafting arguments parsed --]] function p.processTemplate( tArgs, ingredientPatterns ) local cArgs = {} for i, v in pairs( crafting.cArgVals ) do cArgs[i] = tArgs[i] or tArgs[v] end cArgs.Output = tArgs.Output local parsedCArgs = parseCraftingArgs( cArgs ) local requiredFrameNumData = findRequiredFrameNums( parsedCArgs, ingredientPatterns ) if not requiredFrameNumData then return end local newCArgs local modified if requiredFrameNumData == true then newCArgs = parsedCArgs else local argGroups = generateArgGroups( tArgs.arggroups, parsedCArgs ) newCArgs = {} for _, groupData in pairs( argGroups ) do local group = groupData.args local relevantFrameNums = findRelevantFrameNums( requiredFrameNumData, group ) if not relevantFrameNums then for arg in pairs( group ) do newCArgs[arg] = parsedCArgs[arg] end else modified = true for arg in pairs( group ) do newCArgs[arg] = p.extractRelevantFrames( relevantFrameNums, parsedCArgs[arg] ) end end end end -- Convert arguments back to shapeless format if they were originally if tArgs[1] then local i = 1 for argNum = 1, 9 do tArgs[argNum] = nil local cArg = newCArgs[argNum] if cArg then tArgs[i] = cArg i = i + 1 end end else for i, arg in pairs( crafting.cArgVals ) do tArgs[arg] = newCArgs[i] end end tArgs.Output = newCArgs.Output tArgs.parsed = true -- Let Module:Recipe table generate these -- with the modified crafting args if modified then tArgs.name = nil tArgs.ingredients = nil end return tArgs end --[[Works out which frame is the first frame, and returns its name, or alias name, for sorting purposes --]] function p.getFirstFrameName( frames, subframe ) local frame = frames[1] if not subframe and frame[1] then return p.getFirstFrameName( frame[1], true ) end local alias = frames.aliasReference and frames.aliasReference[1] return alias and alias.frame.name or frame.name end --[[Performs the DPL query which retrieves the arguments from the crafting templates on the pages within the requested categories --]] function dplQuery( category, ignore ) test = mw.title.new(category, "Category") test = test.exists if test then return mw.getCurrentFrame():callParserFunction( '#dpl:', { category = category, -- nottitleregexp = ignore, include = '{' .. i18n.templateCrafting .. '}:' .. table.concat( argList, ':' ), mode = 'userformat', secseparators = '====', multisecseparators = '====' } ) end return nil end --[[The main body, which retrieves the data, and returns the relevant crafting templates, sorted alphabetically --]] function p.dpl( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end local ingredients = args[1] and mw.text.split( args[1], '%s*,%s*' ) or { mw.title.getCurrentTitle().text } local matchTypes = args.match and args.match:find( ',' ) and mw.text.split( args.match, '%s*,%s*' ) or args.match local ingredientPatterns = createIngredientPatterns( ingredients, matchTypes ) local data if args.category then data = dplQuery( args.category, args.ignore ) else -- DPL has a limit of four categories, so do it in chunks data = {} local dataNum = 1 local ingredientCount = #ingredients local catParts = mw.text.split( i18n.queryCategory, '%$1' ) for i = 1, ingredientCount, 4 do data[dataNum] = dplQuery( catParts[1] .. table.concat( ingredients, catParts[2] .. '|' .. catParts[1], i, math.min( i + 3, ingredientCount ) ) .. catParts[2], args.ignore ) dataNum = dataNum + 1 end data = table.concat( data ) end if data == nil or data == "" then return "Recipe Category not found" end local showDescription local templates = {} local i = 1 for templateArgs in mw.text.gsplit( data:sub( 5 ), '====' ) do local tArgs = extractArgs( templateArgs ) local newArgs = tArgs and p.processTemplate( tArgs, ingredientPatterns ) if newArgs then if tArgs.description then showDescription = '1' end templates[i] = { args = newArgs, sortKey = mw.ustring.lower( ( newArgs.name or p.getFirstFrameName( newArgs.Output ) ) :gsub( '^' .. prefixes.any .. ' ', '' ) :gsub( '^' .. prefixes.matching .. ' ', '' ) :gsub( '^%[%[', '' ) :gsub( '^[^|]+|', '' ) ), } i = i + 1 end end local templateCount = #templates if templateCount == 0 then return f:expandTemplate{ title = 'Translation category', args = { i18n.emptyCategory, project = '0' } } end table.sort( templates, function( a, b ) return a.sortKey < b.sortKey end ) local initialArgs = templates[1].args initialArgs.head = '1' initialArgs.showname = '1' initialArgs.showdescription = showDescription if not args.continue then templates[templateCount].args.foot = '1' end local out = {} for i, template in ipairs( templates ) do out[i] = crafting.table( template.args ) end return table.concat( out, '\n' ) end return p 30ca6f8b023cec68a4684a72ac3b10ff10371c6d Template:Crafting usage 10 116 182 2024-05-08T20:46:03Z Axxyyy 2 Created page with "<includeonly>{{#invoke: Crafting usage | dpl }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page -->" wikitext text/x-wiki <includeonly>{{#invoke: Crafting usage | dpl }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page --> aa63d42e786d6de193e324895ed611ef6fc53c0b Template:Crafting usage/doc 10 117 183 2024-05-08T20:46:27Z Axxyyy 2 Created page with "{{lua}} This template automatically populates the "As a crafting ingredient" section of pages by retrieving recipes from other pages which use it as an ingredient. Only pages which are in <code>Category:Recipe using <ingredient></code> ([[:Category:Recipes|category list]]) are searched for recipes. Only recipes using {{tl|crafting}} are used. If no relevant recipes are found, the page will be added to [[:Category:Empty crafting usage]]. == Usage == * <code>{{{1}}}</c..." wikitext text/x-wiki {{lua}} This template automatically populates the "As a crafting ingredient" section of pages by retrieving recipes from other pages which use it as an ingredient. Only pages which are in <code>Category:Recipe using <ingredient></code> ([[:Category:Recipes|category list]]) are searched for recipes. Only recipes using {{tl|crafting}} are used. If no relevant recipes are found, the page will be added to [[:Category:Empty crafting usage]]. == Usage == * <code>{{{1}}}</code>: is used to control which category to look through and which ingredient it is looking for, this defaults to the page name. Multiple ingredients can be specified here, separated by commas. * <code>{{{match}}}</code>: how exact the ingredient match should be, the default being an exact match. Multiple match types can be specified here, separated by commas. If multiple ingredients are specified, but only one match type, then that will be used for all ingredients. ** <code>start</code> means the start of the ingredient has to exactly match. E.g: "Redstone" will match "Redstone Torch", "Redstone Block", "Redstone", etc.; but not "Block of Redstone", "Some Redstone thing", etc. ** <code>end</code> means the end of the ingredient has to exactly match. E.g: "Redstone" will match "Block of Redstone", "Redstone", etc.; but not "Redstone Block", "Some Redstone thing", etc. ** <code>any</code> means the ingredient can be found anywhere within the name. E.g: "Redstone" will match "Block of Redstone, "Redstone", "Redstone Block", "Some Redstone thing", etc.; but not "Red stone", "Block of Reddishstone", etc. * <code>{{{category}}}</code>: look through a different category from the ingredient name, defaults to <code>Recipe using {{{1}}}</code> * <code>{{{ignore}}}</code>: a regex string of pages to ignore, without namespace and with spaces replaced with underscores. Pipe characters have to be replaced with <code>¦</code>. * <code>{{{description}}}</code>: By default, the description is shown automatically if any of the recipes has one, but if this is set to 0, the description column will be forced to not show and if set to 1, it will be forced to show. * <code>{{{continue}}}</code>: if set, the table will not be ended, allowing additional recipes to be manually added to it. As with normal {{tl|crafting}} usage, the last recipe must have <code>{{{foot}}}</code> set. This is really just a stopgap for if the template somehow misses some recipes, or if coupled with {{{ignore}}} used to manually write a recipe, for greater customisability. == {{tl|Crafting}} usage == These args are used on the {{tl|crafting}} templates themselves, but are read by this template. * <code>{{{ignoreusage}}}</code>: This can be added to crafting recipes which should be ignored by this template. Best for recipes which need to be ignored by multiple {{tl|crafting usage}} templates. * <code>{{{arggroups}}}</code>: Used to manually specify which arguments are grouped (see below). Use the arg names (A1, A2, etc.) if the recipe is shaped, or numbers if the recipe is shapeless. Grouped args are separated by commas, and groups are separated by semi-colons. For example: <code>A1,B1,A2;C1,Output</code> would make A1, B1 and A2 a group and C1 and Output a group. If not all frames of an animation is used, any value set in the <code>name</code> or <code>ingredients</code> arguments will be removed. == Arg groups == In order to correctly understand how the animations in a recipe should be displayed, the template needs to know which arguments are related. For example: in the bed recipe, any wood plank and any wool color can be mixed, and they will all produce the same color bed, thus none of them are related. However in the firework star recipe, the dye and the resulting firework star ''are'' related, but the extra ingredient isn't (any extra ingredient can be used with any color of firework star, but the correct dye has to be used to get the correct firework star). For animations with different amount of frames, the template knows that they are not grouped, because the animation would get out of sync. However, if they have the same amount of frames, the template assumes they are a group. In cases where this isn't true, {{{arggroups}}} should be used. {{LoadPage|Template:Crafting usage/doc/example|Example}} <includeonly> <!-- Template categories/interwiki here --> [[Category:Grid templates]] [[Category:Table templates]] </includeonly> <noinclude> <!-- Documentation categories/interwiki here --> </noinclude> b3e0069c31d235665e5ab999e7fdf637f2776d02 Ceramic 0 118 184 2024-05-08T20:46:50Z Axxyyy 2 Created page with "Ceramic is a basic item in Atomic Technology that is used to make [[Forge Casing]]s and [[Forge Controller]]s. {{Item |image=Ceramic.png |type=Craftable Item |invimage=Ceramic |renewable=Yes |stackable=Yes (64) |availability=Survival |nameid=ceramic }} {{Crafting |Sand |Clay |Output=Ceramic,2 }} == Usage == === As a Crafting Ingredient === {{Crafting usage}}" wikitext text/x-wiki Ceramic is a basic item in Atomic Technology that is used to make [[Forge Casing]]s and [[Forge Controller]]s. {{Item |image=Ceramic.png |type=Craftable Item |invimage=Ceramic |renewable=Yes |stackable=Yes (64) |availability=Survival |nameid=ceramic }} {{Crafting |Sand |Clay |Output=Ceramic,2 }} == Usage == === As a Crafting Ingredient === {{Crafting usage}} 3a7aad635355cb911eb11b99b49be6c316feb4c8 189 184 2024-05-09T20:15:40Z Axxyyy 2 wikitext text/x-wiki Ceramic is a basic item in Atomic Technology that is used to make [[Forge Casing]]s and [[Forge Controller]]s. {{Item |image=Ceramic.png |type=Craftable Item |invimage=Ceramic |renewable=Yes |stackable=Yes (64) |availability=Survival |nameid=ceramic }} == Obtaining == === Crafting === {{Crafting |Sand |Clay |Output=Ceramic,2 }} == Usage == === As a Crafting Ingredient === {{Crafting usage|Ceramic}} 0c5aef0ef1d0a94df372a7a5d23eed3828c57f5f File:Grid Forge Casing.png 6 119 185 2024-05-09T17:35:11Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Forge Casing.png 6 120 186 2024-05-09T17:37:55Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Forge Casing 0 121 187 2024-05-09T17:42:15Z Axxyyy 2 Created page with "Forge Casings are used with [[Forge Controller]]s to make a [[Forge]]. {{Item |image=Forge_Casing.png |type=Craftable Item |invimage=Forge_Casing |renewable=Yes |stackable=Yes (64) |availability=Survival |nameid=forge_casing }} {{Crafting |B1=Ceramic |B2=Ceramic |C1=Ceramic|C2=Ceramic |Output=Forge_Casing }}" wikitext text/x-wiki Forge Casings are used with [[Forge Controller]]s to make a [[Forge]]. {{Item |image=Forge_Casing.png |type=Craftable Item |invimage=Forge_Casing |renewable=Yes |stackable=Yes (64) |availability=Survival |nameid=forge_casing }} {{Crafting |B1=Ceramic |B2=Ceramic |C1=Ceramic|C2=Ceramic |Output=Forge_Casing }} 0cf9d6e97a9959259a12fb6cfd764a6db100cbf2 188 187 2024-05-09T17:50:06Z Axxyyy 2 wikitext text/x-wiki Forge Casings are used with [[Forge Controller]]s to make a [[Forge]]. {{Item |image=Forge_Casing.png |type=Craftable Item |invimage=Forge_Casing |renewable=Yes |stackable=Yes (64) |availability=Survival |nameid=forge_casing }} == Obtaining == === Crafting === {{Crafting |B1=Ceramic |B2=Ceramic |C1=Ceramic|C2=Ceramic |Output=Forge_Casing }} d3d8670d52438dab3bd9fe635abea4970b36228c 190 188 2024-05-09T20:54:20Z Axxyyy 2 wikitext text/x-wiki Forge Casings are used with a [[Forge Controller]] to make a [[Forge]]. {{Item |image=Forge_Casing.png |type=Craftable Item |invimage=Forge_Casing |renewable=Yes |stackable=Yes (64) |availability=Survival |nameid=forge_casing }} == Obtaining == === Crafting === {{Crafting |B1=Ceramic |B2=Ceramic |C1=Ceramic|C2=Ceramic |Output=Forge_Casing }} 964ca9742763e4c5bd8c1d4223c357b00cc739fb File:Grid Forge Controller.png 6 122 191 2024-05-09T22:01:17Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Forge Controller.png 6 123 192 2024-05-09T22:08:02Z Axxyyy 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Grid/Crafting table 10 124 193 2024-05-10T01:07:45Z Axxyyy 2 Created page with "<includeonly>{{#invoke:grid|craftingTable}}</includeonly> <noinclude> {{/doc}} </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:grid|craftingTable}}</includeonly> <noinclude> {{/doc}} </noinclude> 540ec2d363d68f6b5dcce0e04f9d9435ea61be8e Template:Grid/Crafting table/doc 10 125 194 2024-05-10T01:10:19Z Axxyyy 2 Created page with "{{doc/start}} {{lua|Grid}} This template is used to create a grid that looks similar to the [[Crafting Table|Crafting Table's]] GUI screen. See [[Template:Grid]] for basic grid usage, this documentation page will cover additional or different functions. Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead. __TOC__ == Usage == <pre style="max-width: 250px">{{Grid/Crafting Table |A1= |B1=..." wikitext text/x-wiki {{doc/start}} {{lua|Grid}} This template is used to create a grid that looks similar to the [[Crafting Table|Crafting Table's]] GUI screen. See [[Template:Grid]] for basic grid usage, this documentation page will cover additional or different functions. Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead. __TOC__ == Usage == <pre style="max-width: 250px">{{Grid/Crafting Table |A1= |B1= |C1= |A2= |B2= Oak Wood Planks |C2= |A3= |B3= Oak Wood Planks |C3= |Output= Stick,4 }}</pre> ;produces: {{Grid/Crafting Table |A1= |B1= |C1= |A2= |B2= Oak Wood Planks |C2= |A3= |B3= Oak Wood Planks |C3= |Output= Stick,4 }} Use the [[#Available images|available images]] listed below. === Shapeless === If a recipe is shapeless, add shapeless=1 to the template, which will display an icon which when hovered over explains what a shapeless recipe is. <pre style="max-width: 236px">{{Grid/Crafting Table |shapeless= 1 |A1= |B1= Blaze Powder |C1= |A2= |B2= Coal,Charcoal |C2= |A3= |B3= Gunpowder |C3= |Output= Fire Charge,3 }}</pre> ;produces: {{Grid/Crafting Table |shapeless= 1 |A1= |B1= Blaze Powder |C1= |A2= |B2= Coal,Charcoal |C2= |A3= |B3= Gunpowder |C3= |Output= Fire Charge,3 }} The shapeless parameter does not support animation, so shapeless and non-shapeless recipes cannot be combined. === Animated === To make the grid animate, you make a list of blocks and objects you want to show, separated by semi-colons. <pre style="max-width: 616px">{{Grid/Crafting Table |A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli |A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli |A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli |Output= Lapis Lazuli,9; Lapis Lazuli Block }}</pre> ;produces: {{Grid/Crafting Table |A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli |A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli |A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli |Output= Lapis Lazuli,9; Lapis Lazuli Block }} <pre style="max-width: 602px">{{Grid/Crafting Table |A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block }}</pre> ;produces: {{Grid/Crafting Table |A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli |Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block }} === Mods === Mod images and normal images can be combined just like in a single grid. When uploading mod images, they must have the mod page name in parenthesis at the end. For example Fancystone (FancyPack). The Mod parameter can be used to set a default used for all parameters, this is best used when all items in the crafting table are modded items, or if the mod name is long and using the vanilla (v) parameter for the vanilla items in the table would be quicker. <pre style="max-width: 848px">{{Grid/Crafting Table |A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust |A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit |A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone |Output= IndustrialCraft:Advanced Circuit,2 }}</pre> ;or <pre style="max-width: 656px">{{Grid/Crafting Table |Mod= IndustrialCraft |A1= v:Redstone Dust |B1= Cable |C1= vanilla:Glowstone Dust |A2= Electronic Circuit |B2= V:Lapis Lazuli Block |C2= Electronic Circuit |A3= Vanilla:Glowstone Dust |B3= Cable |C3= v:Redstone Dust |Output= Advanced Circuit,2 }}</pre> ;produces: {{Grid/Crafting Table |A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust |A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit |A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone |Output= IndustrialCraft:Advanced Circuit,2 }} Note the links of the vanilla Minecraft items, compared to the IndustrialCraft items. Animation is fully supported between mod and vanilla items. {{doc/end}} b3936ff1d5459ba3db101fc8e041d39b72e78471